From 3561e2948b8c349f1756c296765845c535d12d9e Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Sat, 4 May 2024 22:39:55 -0500 Subject: [PATCH] Add default style override in preparation for Qt 6.7 --- scwx-qt/source/scwx/qt/main/main.cpp | 42 +++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/scwx-qt/source/scwx/qt/main/main.cpp b/scwx-qt/source/scwx/qt/main/main.cpp index ebc2525d..d9e2b632 100644 --- a/scwx-qt/source/scwx/qt/main/main.cpp +++ b/scwx-qt/source/scwx/qt/main/main.cpp @@ -15,6 +15,9 @@ #include #include +#include +#include + #include #include #include @@ -26,8 +29,17 @@ static const std::string logPrefix_ = "scwx::main"; static const auto logger_ = scwx::util::Logger::Create(logPrefix_); +static void OverrideDefaultStyle(const std::vector& args); + int main(int argc, char* argv[]) { + // Store arguments + std::vector args {}; + for (int i = 0; i < argc; ++i) + { + args.push_back(argv[i]); + } + // Initialize logger scwx::util::Logger::Initialize(); spdlog::set_level(spdlog::level::debug); @@ -87,7 +99,12 @@ int main(int argc, char* argv[]) // Theme auto uiStyle = scwx::qt::types::GetUiStyle( scwx::qt::settings::GeneralSettings::Instance().theme().GetValue()); - if (uiStyle != scwx::qt::types::UiStyle::Default) + + if (uiStyle == scwx::qt::types::UiStyle::Default) + { + OverrideDefaultStyle(args); + } + else { QApplication::setStyle( QString::fromStdString(scwx::qt::types::GetUiStyleName(uiStyle))); @@ -125,3 +142,26 @@ int main(int argc, char* argv[]) return result; } + +static void OverrideDefaultStyle(const std::vector& args) +{ +#if defined(_WIN32) + bool hasStyleArgument = false; + + for (int i = 1; i < args.size(); ++i) + { + if (args.at(i) == "-style") + { + hasStyleArgument = true; + break; + } + } + + // Override the default Windows 11 style unless the user supplies a style + // argument + if (!hasStyleArgument) + { + QApplication::setStyle("windowsvista"); + } +#endif +}