diff options
author | Janek Bevendorff <janek@jbev.net> | 2019-10-21 11:49:09 +0300 |
---|---|---|
committer | Janek Bevendorff <janek@jbev.net> | 2020-05-03 10:59:36 +0300 |
commit | d9214db404571044ae94f92c9aba0963a0243832 (patch) | |
tree | 291e7666ec2c3464ad736632f4b1fab822bd1062 /src/core/Resources.cpp | |
parent | 596d2cf425c3c8495b4c4a58c61798afe9fdd536 (diff) |
Implement Caps Lock warning
Diffstat (limited to 'src/core/Resources.cpp')
-rw-r--r-- | src/core/Resources.cpp | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/src/core/Resources.cpp b/src/core/Resources.cpp index 5f13a7cdf..c4f747232 100644 --- a/src/core/Resources.cpp +++ b/src/core/Resources.cpp @@ -115,11 +115,11 @@ QIcon Resources::trayIconUnlocked() return useDarkIcon() ? icon("keepassxc-dark", false) : icon("keepassxc-unlocked", false); } -QIcon Resources::icon(const QString& name, bool recolor) +QIcon Resources::icon(const QString& name, bool recolor, const QColor& overrideColor) { QIcon icon = m_iconCache.value(name); - if (!icon.isNull()) { + if (!icon.isNull() && !overrideColor.isValid()) { return icon; } @@ -128,28 +128,36 @@ QIcon Resources::icon(const QString& name, bool recolor) 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); - painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Normal, QPalette::WindowText)); - icon.addPixmap(QPixmap::fromImage(img), QIcon::Normal); + if (!overrideColor.isValid()) { + QPalette palette = getMainWindow()->palette(); + painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Normal, QPalette::WindowText)); + icon.addPixmap(QPixmap::fromImage(img), QIcon::Normal); - painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Active, QPalette::ButtonText)); - icon.addPixmap(QPixmap::fromImage(img), QIcon::Active); + painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Active, QPalette::ButtonText)); + icon.addPixmap(QPixmap::fromImage(img), QIcon::Active); - 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::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); + painter.fillRect(0, 0, img.width(), img.height(), palette.color(QPalette::Disabled, QPalette::WindowText)); + icon.addPixmap(QPixmap::fromImage(img), QIcon::Disabled); + } else { + painter.fillRect(0, 0, img.width(), img.height(), overrideColor); + icon.addPixmap(QPixmap::fromImage(img), QIcon::Normal); + } #if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) icon.setIsMask(true); #endif } - m_iconCache.insert(name, icon); + if (!overrideColor.isValid()) { + m_iconCache.insert(name, icon); + } return icon; } |