diff options
author | Alessandro Portale <[email protected]> | 2017-04-07 16:33:36 +0200 |
---|---|---|
committer | Alessandro Portale <[email protected]> | 2017-04-11 13:22:54 +0000 |
commit | c2483427f1d68ea280a52784df5a23225ab0072b (patch) | |
tree | 2c77a4949aff83026752aa3d1a7a2d892b1e9cf2 | |
parent | 5cf8fbabda4e2570a3115ae3ef8f4715c04b5bd8 (diff) |
Utils: Keep correct palette for dark themers after suspend
Sleep, hibernation and user sign-in can cause a ThemeChange event. That
event resets the application palette, discarding a palette that may have
been previously set.
Dark themes in Qt Creator want to set and keep their custom application
palettes. So, this change sets the custom application palette on each
ThemeChange event that is send to the main window.
Task-number: QTCREATORBUG-14929
Change-Id: Ic9fb0111cfa0e8171b819d687f280c3db6cc8f2c
Reviewed-by: David Schulz <[email protected]>
-rw-r--r-- | src/libs/utils/appmainwindow.cpp | 6 | ||||
-rw-r--r-- | src/libs/utils/theme/theme.cpp | 9 | ||||
-rw-r--r-- | src/libs/utils/theme/theme_p.h | 1 |
3 files changed, 13 insertions, 3 deletions
diff --git a/src/libs/utils/appmainwindow.cpp b/src/libs/utils/appmainwindow.cpp index 7c9a8afe1fb..bdeb3a4cbf9 100644 --- a/src/libs/utils/appmainwindow.cpp +++ b/src/libs/utils/appmainwindow.cpp @@ -24,6 +24,7 @@ ****************************************************************************/ #include "appmainwindow.h" +#include "theme/theme_p.h" #ifdef Q_OS_WIN #include <windows.h> @@ -60,11 +61,14 @@ void AppMainWindow::raiseWindow() #ifdef Q_OS_WIN bool AppMainWindow::event(QEvent *event) { - if (event->type() == m_deviceEventId) { + const QEvent::Type type = event->type(); + if (type == m_deviceEventId) { event->accept(); emit deviceChange(); return true; } + if (type == QEvent::ThemeChange) + setThemeApplicationPalette(); return QMainWindow::event(event); } diff --git a/src/libs/utils/theme/theme.cpp b/src/libs/utils/theme/theme.cpp index b8147de0464..061ff335ccf 100644 --- a/src/libs/utils/theme/theme.cpp +++ b/src/libs/utils/theme/theme.cpp @@ -57,14 +57,19 @@ Theme *proxyTheme() return new Theme(m_creatorTheme); } +void setThemeApplicationPalette() +{ + if (m_creatorTheme && m_creatorTheme->flag(Theme::ApplyThemePaletteGlobally)) + QApplication::setPalette(m_creatorTheme->palette()); +} + void setCreatorTheme(Theme *theme) { if (m_creatorTheme == theme) return; delete m_creatorTheme; m_creatorTheme = theme; - if (theme && theme->flag(Theme::ApplyThemePaletteGlobally)) - QApplication::setPalette(theme->palette()); + setThemeApplicationPalette(); } Theme::Theme(const QString &id, QObject *parent) diff --git a/src/libs/utils/theme/theme_p.h b/src/libs/utils/theme/theme_p.h index 4170ec7cd9f..1feeeda4e25 100644 --- a/src/libs/utils/theme/theme_p.h +++ b/src/libs/utils/theme/theme_p.h @@ -51,5 +51,6 @@ public: }; QTCREATOR_UTILS_EXPORT void setCreatorTheme(Theme *theme); +QTCREATOR_UTILS_EXPORT void setThemeApplicationPalette(); } // namespace Utils |