From dd5a5b86e809869fa45c6545789fff0657705521 Mon Sep 17 00:00:00 2001 From: Igor Malinovskiy Date: Thu, 17 Feb 2022 10:13:32 +0200 Subject: [PATCH] Add some magic to make title bar on Windows dark Fix #5199 --- src/app/app.cpp | 28 ++++++++++++++++++++++++++-- src/resp.pro | 2 ++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/app/app.cpp b/src/app/app.cpp index fa9d9105a..2e04c1e6f 100644 --- a/src/app/app.cpp +++ b/src/app/app.cpp @@ -40,6 +40,10 @@ #include "modules/value-editor/valueviewmodel.h" #include "qmlutils.h" +#ifdef Q_OS_WINDOWS +#include +#endif + Application::Application(int& argc, char** argv) : QApplication(argc, argv), m_engine(this), @@ -405,6 +409,26 @@ void Application::updatePalette() return; } - m_engine.rootObjects().at(0)->setProperty( - "palette", QGuiApplication::palette()); + auto rootObject = m_engine.rootObjects().at(0); + + rootObject->setProperty("palette", QGuiApplication::palette()); + +#ifdef Q_OS_WINDOWS + if (!isDarkThemeEnabled()) return; + + auto window = qobject_cast(rootObject); + + if (window) { + auto winHwnd = reinterpret_cast(window->winId()); + BOOL USE_DARK_MODE = true; + BOOL SET_IMMERSIVE_DARK_MODE_SUCCESS = SUCCEEDED(DwmSetWindowAttribute( + winHwnd, 20, &USE_DARK_MODE, sizeof(USE_DARK_MODE))); + + if (SET_IMMERSIVE_DARK_MODE_SUCCESS) { + // Dirty hack to re-draw window and apply darkmode color + rootObject->setProperty("visible", false); + rootObject->setProperty("visible", true); + } + } +#endif } diff --git a/src/resp.pro b/src/resp.pro index 1f554e4b6..0b264115c 100644 --- a/src/resp.pro +++ b/src/resp.pro @@ -94,6 +94,8 @@ win32 { release: DESTDIR = ./../bin/windows/release debug: DESTDIR = ./../bin/windows/debug + + LIBS += -ldwmapi } unix:macx { # OSX