From 84e2814ef0f70ea2a6287c6413d700d5f04a5bdb Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 14 Aug 2020 11:29:34 +0200 Subject: [PATCH] Do not propagate dark theme to widget designer Fixes: QTCREATORBUG-23981 Change-Id: I63c362b2ec87e02e7d6828ee4c143f54d113bef2 Reviewed-by: Alessandro Portale --- src/libs/utils/theme/theme.cpp | 17 ++++++++++++++++- src/plugins/designer/formeditorw.cpp | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/theme/theme.cpp b/src/libs/utils/theme/theme.cpp index 15963f2a564..ca9bbebabf0 100644 --- a/src/libs/utils/theme/theme.cpp +++ b/src/libs/utils/theme/theme.cpp @@ -242,9 +242,24 @@ void Theme::readSettings(QSettings &settings) } } +// If you copy QPalette, default values stay at default, even if that default is different +// within the context of different widgets. Create deep copy. +static QPalette copyPalette(const QPalette &p) +{ + QPalette res; + for (int group = 0; group < QPalette::NColorGroups; ++group) { + for (int role = 0; role < QPalette::NColorRoles; ++role) { + res.setBrush(QPalette::ColorGroup(group), + QPalette::ColorRole(role), + p.brush(QPalette::ColorGroup(group), QPalette::ColorRole(role))); + } + } + return res; +} + QPalette Theme::initialPalette() { - static QPalette palette = QApplication::palette(); + static QPalette palette = copyPalette(QApplication::palette()); return palette; } diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp index f068888b494..6d555f2dbff 100644 --- a/src/plugins/designer/formeditorw.cpp +++ b/src/plugins/designer/formeditorw.cpp @@ -766,6 +766,7 @@ IEditor *FormEditorData::createEditor() m_fwm->closeAllPreviews(); QDesignerFormWindowInterface *form = m_fwm->createFormWindow(nullptr); QTC_ASSERT(form, return nullptr); + form->setPalette(Theme::initialPalette()); QObject::connect(form, &QDesignerFormWindowInterface::toolChanged, [this] (int i) { toolChanged(i); }); auto widgetHost = new SharedTools::WidgetHost( /* parent */ nullptr, form);