diff options
author | Janek Bevendorff <janek@jbev.net> | 2020-03-18 17:59:05 +0300 |
---|---|---|
committer | Janek Bevendorff <janek@jbev.net> | 2020-04-29 00:35:03 +0300 |
commit | 2f122946392f5c6afb176034a7f84319d26216ab (patch) | |
tree | 28bca71ea04e1f371350c88ff1d21c8b3a5b83c6 /src/core/Resources.cpp | |
parent | 7168bcdbe577bb7f8c6be261fddfac079550848b (diff) |
Fix CategoryListWidget icons
- Correct colouring of selected icon
- Better selection rectangle correction
Diffstat (limited to 'src/core/Resources.cpp')
-rw-r--r-- | src/core/Resources.cpp | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/src/core/Resources.cpp b/src/core/Resources.cpp index fab4eb168..90bc117ae 100644 --- a/src/core/Resources.cpp +++ b/src/core/Resources.cpp @@ -21,6 +21,7 @@ #include <QBitmap> #include <QDir> #include <QLibrary> +#include <QPainter> #include <QStyle> #include "config-keepassx.h" @@ -124,23 +125,24 @@ QIcon Resources::icon(const QString& name, bool recolor) icon = QIcon::fromTheme(name); if (getMainWindow() && recolor) { - QPixmap pixmap = icon.pixmap(128, 128); + QImage img = icon.pixmap(128, 128).toImage().convertToFormat(QImage::Format_ARGB32_Premultiplied); icon = {}; QPalette palette = getMainWindow()->palette(); + QPainter painter(&img); + painter.setCompositionMode(QPainter::CompositionMode_SourceAtop); - auto mask = QBitmap::fromImage(pixmap.toImage().createAlphaMask()); - pixmap.fill(palette.color(QPalette::WindowText)); - pixmap.setMask(mask); - icon.addPixmap(pixmap, QIcon::Mode::Normal); + painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Normal, QPalette::WindowText)); + icon.addPixmap(QPixmap::fromImage(img), QIcon::Normal); - pixmap.fill(palette.color(QPalette::HighlightedText)); - pixmap.setMask(mask); - icon.addPixmap(pixmap, QIcon::Mode::Selected); + painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Active, QPalette::ButtonText)); + icon.addPixmap(QPixmap::fromImage(img), QIcon::Active); - pixmap.fill(palette.color(QPalette::Disabled, QPalette::WindowText)); - pixmap.setMask(mask); - icon.addPixmap(pixmap, QIcon::Mode::Disabled); + painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Active, QPalette::HighlightedText)); + icon.addPixmap(QPixmap::fromImage(img), QIcon::Selected); + + painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Disabled, QPalette::WindowText)); + icon.addPixmap(QPixmap::fromImage(img), QIcon::Disabled); #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) icon.setIsMask(true); |