trialuser02 / qt6ct

Qt6 Configuration Tool
BSD 2-Clause "Simplified" License
128 stars 10 forks source link

Apply new platform palette without overriding app palette #48

Open jlindgren90 opened 2 months ago

jlindgren90 commented 2 months ago

Currently when a palette is set by qt6ct, it can in some cases override an app-specific palette. It would be nice if qt6ct would only set the platform palette (i.e. QPlatformTheme::SystemPalette) and still allow apps to set/adjust their own palette when desired.

Test case: start Audacious and select Dark theme in Audacious settings. Then in qt6ct configuration, select "dusk" or "sand" color scheme. It partially applies to Audacious (where it should not) and you end up with an unusable mix of Audacious's color scheme and qt6ct's.

Port of the qt5ct patch from https://sourceforge.net/p/qt5ct/tickets/97/. I have been using the patch in both qt5ct and qt6ct for quite some time and have not seen any ill side effects.

ilya-fedin commented 2 months ago

It might be a good idea to port qt6ct to QWindowSystemInterface::handleThemeChange which updates system dark mode state (which Qt calls color scheme), palette, icons and fonts without overriding them via APIs meant for applications: https://github.com/qt/qtbase/blob/dev/src/gui/kernel/qguiapplication.cpp#L2639-L2669