From a88fe61a7bad9c63ee8d39eb1d3afaf906ab4de5 Mon Sep 17 00:00:00 2001 From: Jonathan White Date: Sun, 26 Jul 2020 17:02:02 -0400 Subject: [PATCH] Minor theme fixes * Support mouse hover color change for QPushButtons. * Fix #5040 - don't enforce standard palette when in classic theme mode --- src/gui/Application.cpp | 19 +++++++++---------- src/gui/styles/base/basestyle.qss | 5 +++++ src/gui/styles/dark/darkstyle.qss | 10 ++++++++++ src/gui/styles/light/lightstyle.qss | 9 +++++++-- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/src/gui/Application.cpp b/src/gui/Application.cpp index 625540c1..bb6d37b9 100644 --- a/src/gui/Application.cpp +++ b/src/gui/Application.cpp @@ -144,18 +144,19 @@ Application::~Application() void Application::applyTheme() { - QString appTheme = config()->get(Config::GUI_ApplicationTheme).toString(); + auto appTheme = config()->get(Config::GUI_ApplicationTheme).toString(); if (appTheme == "auto") { - if (osUtils->isDarkMode()) { - setStyle(new DarkStyle); - m_darkTheme = true; - } else { - setStyle(new LightStyle); - } - } else if (appTheme == "light") { + appTheme = osUtils->isDarkMode() ? "dark" : "light"; + } + + if (appTheme == "light") { setStyle(new LightStyle); + // Workaround Qt 5.15+ bug + setPalette(style()->standardPalette()); } else if (appTheme == "dark") { setStyle(new DarkStyle); + // Workaround Qt 5.15+ bug + setPalette(style()->standardPalette()); m_darkTheme = true; } else { // Classic mode, don't check for dark theme on Windows @@ -164,8 +165,6 @@ void Application::applyTheme() m_darkTheme = osUtils->isDarkMode(); #endif } - - setPalette(style()->standardPalette()); } bool Application::event(QEvent* event) diff --git a/src/gui/styles/base/basestyle.qss b/src/gui/styles/base/basestyle.qss index 597a5b9e..ce47ee4f 100644 --- a/src/gui/styles/base/basestyle.qss +++ b/src/gui/styles/base/basestyle.qss @@ -3,6 +3,11 @@ QPushButton:default { color: palette(highlighted-text); } +/* Note: default button hover is defined in the respective theme style */ +QPushButton:!default:hover { + background: palette(mid); +} + QSpinBox { min-width: 90px; } diff --git a/src/gui/styles/dark/darkstyle.qss b/src/gui/styles/dark/darkstyle.qss index 39ec32a2..922de993 100644 --- a/src/gui/styles/dark/darkstyle.qss +++ b/src/gui/styles/dark/darkstyle.qss @@ -8,6 +8,16 @@ EntryPreviewWidget QLineEdit:disabled, EntryPreviewWidget QTextEdit:disabled { background-color: #424242; } +QPushButton:!default:hover { + /* Using slightly darker shade from palette(button) */ + background: #252528; +} + +QPushButton:default:hover { + /* Using slightly lighter shade from palette(highlight) */ + background: #2E582E; +} + QToolTip { color: #BFBFBF; background-color: #2D532D; diff --git a/src/gui/styles/light/lightstyle.qss b/src/gui/styles/light/lightstyle.qss index 079907d1..bee8415d 100644 --- a/src/gui/styles/light/lightstyle.qss +++ b/src/gui/styles/light/lightstyle.qss @@ -8,11 +8,16 @@ EntryPreviewWidget QLineEdit:disabled, EntryPreviewWidget QTextEdit:disabled { background-color: #EDEDED; } -QGroupBox::title { - color: #4B7B19; +QPushButton:default:hover { + /* Using slightly lighter shade from palette(highlight) */ + background: #568821; } QToolTip { color: #F9F9F9; background-color: #4D7F1A; } + +QGroupBox::title { + color: #4B7B19; +}