Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJanek Bevendorff <janek@jbev.net>2020-03-18 17:59:05 +0300
committerJanek Bevendorff <janek@jbev.net>2020-04-29 00:35:03 +0300
commit2f122946392f5c6afb176034a7f84319d26216ab (patch)
tree28bca71ea04e1f371350c88ff1d21c8b3a5b83c6 /src/core/Resources.cpp
parent7168bcdbe577bb7f8c6be261fddfac079550848b (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.cpp24
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);