From 5370ee1c2f1cefc3e95a077e6de304e78cf7b085 Mon Sep 17 00:00:00 2001 From: Maufeat Date: Sun, 10 Aug 2025 04:05:28 +0200 Subject: [PATCH] fix qt title bar and proper qt 6.5 impl --- src/yuzu/main.cpp | 30 +++++++++++++----------------- src/yuzu/main.h | 2 -- 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index 9cf2f9b76c..9f5e7d5269 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -96,6 +96,7 @@ static FileSys::VirtualFile VfsDirectoryCreateFileWrapper(const FileSys::Virtual #include #include #include +#include #include #include #include @@ -299,16 +300,16 @@ static void OverrideWindowsFont() { } #endif -bool GMainWindow::CheckDarkMode() { -#ifdef __unix__ - const QPalette test_palette(qApp->palette()); - const QColor text_color = test_palette.color(QPalette::Active, QPalette::Text); - const QColor window_color = test_palette.color(QPalette::Active, QPalette::Window); - return (text_color.value() > window_color.value()); +inline static bool isDarkMode() { +#if QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) + const auto scheme = QGuiApplication::styleHints()->colorScheme(); + return scheme == Qt::ColorScheme::Dark; #else - // TODO: Windows - return false; -#endif // __unix__ + const QPalette defaultPalette; + const auto text = defaultPalette.color(QPalette::WindowText); + const auto window = defaultPalette.color(QPalette::Window); + return text.lightness() > window.lightness(); +#endif // QT_VERSION } GMainWindow::GMainWindow(bool has_broken_vulkan) @@ -358,7 +359,6 @@ GMainWindow::GMainWindow(bool has_broken_vulkan) statusBar()->hide(); // Check dark mode before a theme is loaded - os_dark_mode = CheckDarkMode(); startup_icon_theme = QIcon::themeName(); // fallback can only be set once, colorful theme icons are okay on both light/dark QIcon::setFallbackThemeName(QStringLiteral("colorful")); @@ -5383,15 +5383,11 @@ void GMainWindow::UpdateUITheme() { current_theme = default_theme; } -#ifdef _WIN32 - QIcon::setThemeName(current_theme); - AdjustLinkColor(); -#else if (current_theme == QStringLiteral("default") || current_theme == QStringLiteral("colorful")) { QIcon::setThemeName(current_theme == QStringLiteral("colorful") ? current_theme : startup_icon_theme); QIcon::setThemeSearchPaths(QStringList(default_theme_paths)); - if (CheckDarkMode()) { + if (isDarkMode()) { current_theme = QStringLiteral("default_dark"); } } else { @@ -5399,7 +5395,7 @@ void GMainWindow::UpdateUITheme() { QIcon::setThemeSearchPaths(QStringList(QStringLiteral(":/icons"))); AdjustLinkColor(); } -#endif + if (current_theme != default_theme) { QString theme_uri{QStringLiteral(":%1/style.qss").arg(current_theme)}; QFile f(theme_uri); @@ -5661,7 +5657,7 @@ int main(int argc, char* argv[]) { QCoreApplication::setAttribute(Qt::AA_DontCheckOpenGLContextThreadAffinity); #ifdef _WIN32 - QApplication::setStyle(QStringLiteral("windowsvista")); + QApplication::setStyle(QStringLiteral("fusion")); #endif QApplication app(argc, argv); diff --git a/src/yuzu/main.h b/src/yuzu/main.h index e82a9ed335..5e0405ee7f 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h @@ -466,7 +466,6 @@ private: void OpenURL(const QUrl& url); void LoadTranslation(); void OpenPerGameConfiguration(u64 title_id, const std::string& file_name); - bool CheckDarkMode(); bool CheckFirmwarePresence(); void SetFirmwareVersion(); void ConfigureFilesystemProvider(const std::string& filepath); @@ -557,7 +556,6 @@ private: QTimer update_input_timer; QString startup_icon_theme; - bool os_dark_mode = false; // FS std::shared_ptr vfs;