From ed1c1347c50239b151f6ad888229d31ef8c04301 Mon Sep 17 00:00:00 2001 From: Matthieu Gallien Date: Wed, 28 Aug 2024 12:43:23 +0200 Subject: [PATCH] remove broken system paellete detection within our custom style remove custom binding between c++ native Qt API for system palette and our QML styling code for colors detection fixes many issues with dark mode using Windows native style Signed-off-by: Matthieu Gallien --- src/libsync/theme.cpp | 37 ------------------------------------- src/libsync/theme.h | 3 --- theme/Style/Style.qml | 9 ++++++--- 3 files changed, 6 insertions(+), 43 deletions(-) diff --git a/src/libsync/theme.cpp b/src/libsync/theme.cpp index a1b1dfdb9e60b..11c8982bf1fd1 100644 --- a/src/libsync/theme.cpp +++ b/src/libsync/theme.cpp @@ -928,49 +928,12 @@ void Theme::connectToPaletteSignal() { if (!_paletteSignalsConnected) { if (const auto ptr = qobject_cast(QGuiApplication::instance())) { - connect(ptr, &QGuiApplication::paletteChanged, this, &Theme::systemPaletteChanged); connect(ptr->styleHints(), &QStyleHints::colorSchemeChanged, this, &Theme::darkModeChanged); _paletteSignalsConnected = true; } } } -QVariantMap Theme::systemPalette() -{ - connectToPaletteSignal(); -#if defined(Q_OS_WIN) - auto systemPalette = QGuiApplication::palette(); - if(darkMode()) { - systemPalette = reserveDarkPalette; - } -#else - const auto systemPalette = QGuiApplication::palette(); -#endif - - return QVariantMap { - { QStringLiteral("base"), systemPalette.base().color() }, - { QStringLiteral("alternateBase"), systemPalette.alternateBase().color() }, - { QStringLiteral("text"), systemPalette.text().color() }, - { QStringLiteral("toolTipBase"), systemPalette.toolTipBase().color() }, - { QStringLiteral("toolTipText"), systemPalette.toolTipText().color() }, - { QStringLiteral("brightText"), systemPalette.brightText().color() }, - { QStringLiteral("buttonText"), systemPalette.buttonText().color() }, - { QStringLiteral("button"), systemPalette.button().color() }, - { QStringLiteral("highlightedText"), systemPalette.highlightedText().color() }, - { QStringLiteral("placeholderText"), systemPalette.placeholderText().color() }, - { QStringLiteral("windowText"), systemPalette.windowText().color() }, - { QStringLiteral("window"), systemPalette.window().color() }, - { QStringLiteral("dark"), systemPalette.dark().color() }, - { QStringLiteral("highlight"), systemPalette.highlight().color() }, - { QStringLiteral("light"), systemPalette.light().color() }, - { QStringLiteral("link"), systemPalette.link().color() }, - { QStringLiteral("midlight"), systemPalette.midlight().color() }, - { QStringLiteral("mid"), systemPalette.mid().color() }, - { QStringLiteral("linkVisited"), systemPalette.linkVisited().color() }, - { QStringLiteral("shadow"), systemPalette.shadow().color() }, - }; -} - bool Theme::darkMode() { connectToPaletteSignal(); diff --git a/src/libsync/theme.h b/src/libsync/theme.h index e5d312ddee400..0cca5484e4c69 100644 --- a/src/libsync/theme.h +++ b/src/libsync/theme.h @@ -67,7 +67,6 @@ class OWNCLOUDSYNC_EXPORT Theme : public QObject Q_PROPERTY(QColor defaultColor READ defaultColor CONSTANT) - Q_PROPERTY(QVariantMap systemPalette READ systemPalette NOTIFY systemPaletteChanged) Q_PROPERTY(bool darkMode READ darkMode NOTIFY darkModeChanged) public: enum CustomMediaType { @@ -594,7 +593,6 @@ class OWNCLOUDSYNC_EXPORT Theme : public QObject static constexpr const char *themePrefix = ":/client/theme/"; - QVariantMap systemPalette(); bool darkMode(); public slots: @@ -619,7 +617,6 @@ public slots: signals: void systrayUseMonoIconsChanged(bool); - void systemPaletteChanged(const QPalette &palette); void darkModeChanged(); void overrideServerUrlChanged(); void forceOverrideServerUrlChanged(); diff --git a/theme/Style/Style.qml b/theme/Style/Style.qml index 4e686be3f5126..db50c279e9fae 100644 --- a/theme/Style/Style.qml +++ b/theme/Style/Style.qml @@ -8,17 +8,20 @@ QtObject { readonly property int pixelSize: fontMetrics.font.pixelSize readonly property bool darkMode: Theme.darkMode + property SystemPalette nativePalette: SystemPalette { + } + // Colors readonly property color ncBlue: Theme.wizardHeaderBackgroundColor readonly property color ncHeaderTextColor: Theme.wizardHeaderTitleColor - readonly property color ncTextColor: Theme.systemPalette.windowText + readonly property color ncTextColor: nativePalette.text readonly property color ncTextBrightColor: "white" readonly property color ncSecondaryTextColor: "#808080" readonly property color lightHover: Theme.darkMode ? Qt.lighter(backgroundColor, 2) : Qt.darker(backgroundColor, 1.05) readonly property color darkerHover: Theme.darkMode ? Qt.lighter(backgroundColor, 2.35) : Qt.darker(backgroundColor, 1.25) readonly property color menuBorder: Theme.darkMode ? Qt.lighter(backgroundColor, 2.5) : Qt.darker(backgroundColor, 1.5) - readonly property color backgroundColor: Theme.systemPalette.window - readonly property color buttonBackgroundColor: Theme.systemPalette.button + readonly property color backgroundColor: nativePalette.window + readonly property color buttonBackgroundColor: nativePalette.button readonly property color positiveColor: Qt.rgba(0.38, 0.74, 0.38, 1) readonly property color currentUserHeaderColor: UserModel.currentUser ? UserModel.currentUser.headerColor : ncBlue