diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp index 2ccaf2565b..1f53aa2593 100644 --- a/src/gui/kernel/qguiapplication.cpp +++ b/src/gui/kernel/qguiapplication.cpp @@ -2586,10 +2586,11 @@ void QGuiApplicationPrivate::processThemeChanged(QWindowSystemInterfacePrivate:: { if (self) self->handleThemeChanged(); - if (QWindow *window = tce->window.data()) { - QEvent e(QEvent::ThemeChange); - QGuiApplication::sendSpontaneousEvent(window, &e); - } + + QEvent themeChangeEvent(QEvent::ThemeChange); + const QWindowList windows = tce->window ? QWindowList{tce->window} : window_list; + for (auto *window : windows) + QGuiApplication::sendSpontaneousEvent(window, &themeChangeEvent); } void QGuiApplicationPrivate::handleThemeChanged() diff --git a/src/gui/kernel/qwindowsysteminterface.h b/src/gui/kernel/qwindowsysteminterface.h index cb368d489a..b5a6c45381 100644 --- a/src/gui/kernel/qwindowsysteminterface.h +++ b/src/gui/kernel/qwindowsysteminterface.h @@ -257,7 +257,7 @@ public: static void handleScreenRefreshRateChange(QScreen *screen, qreal newRefreshRate); template - static void handleThemeChange(QWindow *window); + static void handleThemeChange(QWindow *window = nullptr); static void handleFileOpenEvent(const QString& fileName); static void handleFileOpenEvent(const QUrl &url); diff --git a/src/gui/text/coretext/qcoretextfontdatabase.mm b/src/gui/text/coretext/qcoretextfontdatabase.mm index b64a8aefc0..a47f7a64f5 100644 --- a/src/gui/text/coretext/qcoretextfontdatabase.mm +++ b/src/gui/text/coretext/qcoretextfontdatabase.mm @@ -245,7 +245,7 @@ void QCoreTextFontDatabase::invalidate() qDeleteAll(m_themeFonts); m_themeFonts.clear(); - QWindowSystemInterface::handleThemeChange(nullptr); + QWindowSystemInterface::handleThemeChange(); } struct FontDescription { diff --git a/src/plugins/platforms/cocoa/qcocoatheme.mm b/src/plugins/platforms/cocoa/qcocoatheme.mm index 3d329f312e..15004a0b05 100644 --- a/src/plugins/platforms/cocoa/qcocoatheme.mm +++ b/src/plugins/platforms/cocoa/qcocoatheme.mm @@ -318,7 +318,7 @@ void QCocoaTheme::handleSystemThemeChange() QFontCache::instance()->clear(); } - QWindowSystemInterface::handleThemeChange(nullptr); + QWindowSystemInterface::handleThemeChange(); } bool QCocoaTheme::usePlatformNativeDialog(DialogType dialogType) const diff --git a/src/plugins/platforms/ios/qiosscreen.mm b/src/plugins/platforms/ios/qiosscreen.mm index 2a9968c841..69ec393b12 100644 --- a/src/plugins/platforms/ios/qiosscreen.mm +++ b/src/plugins/platforms/ios/qiosscreen.mm @@ -217,7 +217,7 @@ static QIOSScreen* qtPlatformScreenFor(UIScreen *uiScreen) if (self.screen == UIScreen.mainScreen) { if (previousTraitCollection.userInterfaceStyle != self.traitCollection.userInterfaceStyle) { QIOSTheme::initializeSystemPalette(); - QWindowSystemInterface::handleThemeChange(nullptr); + QWindowSystemInterface::handleThemeChange(); } } } diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp index fe5b017b27..f32b82bb11 100644 --- a/src/plugins/platforms/windows/qwindowscontext.cpp +++ b/src/plugins/platforms/windows/qwindowscontext.cpp @@ -1164,8 +1164,7 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message, } if (integration->darkModeHandling().testFlag(QWindowsApplication::DarkModeStyle)) { QWindowsTheme::instance()->refresh(); - for (QWindowsWindow *w : d->m_windows) - QWindowSystemInterface::handleThemeChange(w->window()); + QWindowSystemInterface::handleThemeChange(); } } return d->m_screenManager.handleScreenChanges();