Skip to content

Commit

Permalink
remove broken system paellete detection within our custom style
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
mgallien committed Aug 28, 2024
1 parent ec6a55f commit ed1c134
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 43 deletions.
37 changes: 0 additions & 37 deletions src/libsync/theme.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -928,49 +928,12 @@ void Theme::connectToPaletteSignal()
{
if (!_paletteSignalsConnected) {
if (const auto ptr = qobject_cast<QGuiApplication *>(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();
Expand Down
3 changes: 0 additions & 3 deletions src/libsync/theme.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down Expand Up @@ -594,7 +593,6 @@ class OWNCLOUDSYNC_EXPORT Theme : public QObject

static constexpr const char *themePrefix = ":/client/theme/";

QVariantMap systemPalette();
bool darkMode();

public slots:
Expand All @@ -619,7 +617,6 @@ public slots:

signals:
void systrayUseMonoIconsChanged(bool);
void systemPaletteChanged(const QPalette &palette);
void darkModeChanged();
void overrideServerUrlChanged();
void forceOverrideServerUrlChanged();
Expand Down
9 changes: 6 additions & 3 deletions theme/Style/Style.qml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit ed1c134

Please sign in to comment.