From 4e90cb581860c471c97e057a62b362c6a2e99284 Mon Sep 17 00:00:00 2001 From: Janek Bevendorff Date: Sun, 31 Jan 2021 20:08:03 +0100 Subject: [PATCH] Fix on/off icons not being redrawn on theme change --- src/gui/EntryPreviewWidget.cpp | 9 ++++++--- src/gui/Icons.cpp | 25 ++----------------------- src/gui/Icons.h | 2 +- src/gui/PasswordEdit.cpp | 4 ++-- 4 files changed, 11 insertions(+), 29 deletions(-) diff --git a/src/gui/EntryPreviewWidget.cpp b/src/gui/EntryPreviewWidget.cpp index 1a771f62d..759d7e89e 100644 --- a/src/gui/EntryPreviewWidget.cpp +++ b/src/gui/EntryPreviewWidget.cpp @@ -50,9 +50,9 @@ EntryPreviewWidget::EntryPreviewWidget(QWidget* parent) // Entry m_ui->entryTotpButton->setIcon(icons()->icon("chronometer")); m_ui->entryCloseButton->setIcon(icons()->icon("dialog-close")); - m_ui->togglePasswordButton->setIcon(icons()->onOffIcon("password-show")); - m_ui->toggleEntryNotesButton->setIcon(icons()->onOffIcon("password-show")); - m_ui->toggleGroupNotesButton->setIcon(icons()->onOffIcon("password-show")); + m_ui->togglePasswordButton->setIcon(icons()->onOffIcon("password-show", true)); + m_ui->toggleEntryNotesButton->setIcon(icons()->onOffIcon("password-show", true)); + m_ui->toggleGroupNotesButton->setIcon(icons()->onOffIcon("password-show", true)); m_ui->entryAttachmentsWidget->setReadOnly(true); m_ui->entryAttachmentsWidget->setButtonsVisible(false); @@ -199,16 +199,19 @@ void EntryPreviewWidget::setPasswordVisible(bool state) } else { m_ui->entryPasswordLabel->setText(QString("\u25cf").repeated(6)); } + m_ui->togglePasswordButton->setIcon(icons()->onOffIcon("password-show", state)); } void EntryPreviewWidget::setEntryNotesVisible(bool state) { setNotesVisible(m_ui->entryNotesTextEdit, m_currentEntry->notes(), state); + m_ui->toggleEntryNotesButton->setIcon(icons()->onOffIcon("password-show", state)); } void EntryPreviewWidget::setGroupNotesVisible(bool state) { setNotesVisible(m_ui->groupNotesTextEdit, m_currentGroup->notes(), state); + m_ui->toggleGroupNotesButton->setIcon(icons()->onOffIcon("password-show", state)); } void EntryPreviewWidget::setNotesVisible(QTextEdit* notesWidget, const QString& notes, bool state) diff --git a/src/gui/Icons.cpp b/src/gui/Icons.cpp index 6d86951f4..e269e581f 100644 --- a/src/gui/Icons.cpp +++ b/src/gui/Icons.cpp @@ -194,30 +194,9 @@ QIcon Icons::icon(const QString& name, bool recolor, const QColor& overrideColor return icon; } -QIcon Icons::onOffIcon(const QString& name, bool recolor) +QIcon Icons::onOffIcon(const QString& name, bool on, bool recolor) { - QString cacheName = "onoff/" + name; - - QIcon icon = m_iconCache.value(cacheName); - - if (!icon.isNull()) { - return icon; - } - - const QSize size(48, 48); - QIcon on = Icons::icon(name + "-on", recolor); - icon.addPixmap(on.pixmap(size, QIcon::Mode::Normal), QIcon::Mode::Normal, QIcon::On); - icon.addPixmap(on.pixmap(size, QIcon::Mode::Selected), QIcon::Mode::Selected, QIcon::On); - icon.addPixmap(on.pixmap(size, QIcon::Mode::Disabled), QIcon::Mode::Disabled, QIcon::On); - - QIcon off = Icons::icon(name + "-off", recolor); - icon.addPixmap(off.pixmap(size, QIcon::Mode::Normal), QIcon::Mode::Normal, QIcon::Off); - icon.addPixmap(off.pixmap(size, QIcon::Mode::Selected), QIcon::Mode::Selected, QIcon::Off); - icon.addPixmap(off.pixmap(size, QIcon::Mode::Disabled), QIcon::Mode::Disabled, QIcon::Off); - - m_iconCache.insert(cacheName, icon); - - return icon; + return icon(name + (on ? "-on" : "-off"), recolor); } Icons* Icons::instance() diff --git a/src/gui/Icons.h b/src/gui/Icons.h index b002a241b..a8d3f54ee 100644 --- a/src/gui/Icons.h +++ b/src/gui/Icons.h @@ -33,7 +33,7 @@ public: QIcon trayIconUnlocked(); QString trayIconAppearance() const; QIcon icon(const QString& name, bool recolor = true, const QColor& overrideColor = QColor::Invalid); - QIcon onOffIcon(const QString& name, bool recolor = true); + QIcon onOffIcon(const QString& name, bool on, bool recolor = true); static Icons* instance(); diff --git a/src/gui/PasswordEdit.cpp b/src/gui/PasswordEdit.cpp index e882ea435..61c644696 100644 --- a/src/gui/PasswordEdit.cpp +++ b/src/gui/PasswordEdit.cpp @@ -58,7 +58,7 @@ PasswordEdit::PasswordEdit(QWidget* parent) #endif m_toggleVisibleAction = new QAction( - icons()->icon("password-show-off"), + icons()->onOffIcon("password-show", false), tr("Toggle Password (%1)").arg(QKeySequence(modifier + Qt::Key_H).toString(QKeySequence::NativeText)), this); m_toggleVisibleAction->setCheckable(true); @@ -113,7 +113,7 @@ void PasswordEdit::enablePasswordGenerator() void PasswordEdit::setShowPassword(bool show) { setEchoMode(show ? QLineEdit::Normal : QLineEdit::Password); - m_toggleVisibleAction->setIcon(icons()->icon(show ? "password-show-on" : "password-show-off")); + m_toggleVisibleAction->setIcon(icons()->onOffIcon("password-show", show)); m_toggleVisibleAction->setChecked(show); if (m_repeatPasswordEdit) {