fix(ui): restore Windows accent color on PySide 6.8.0.1 (Fix #668) (#755)

* fix(ui): use the new correct(ish) accent color role for Windows

* ui: boost Windows `AlternateBase` lightness
This commit is contained in:
Travis Abendshien
2025-01-30 22:09:50 -08:00
committed by GitHub
parent 82edbee276
commit e0d21c14a3

View File

@@ -3,6 +3,8 @@
# Created for TagStudio: https://github.com/CyanVoxel/TagStudio
import sys
from PySide6 import QtCore
from PySide6.QtCore import QEvent
from PySide6.QtGui import (
@@ -25,11 +27,27 @@ class ThumbButton(QPushButtonWrapper):
self.hovered = False
self.selected = False
self.select_color: QColor = QPalette.color(
self.palette(),
QPalette.ColorGroup.Active,
QPalette.ColorRole.Accent,
)
# NOTE: As of PySide 6.8.0.1, the QPalette.ColorRole.Accent role no longer works on Windows.
# The QPalette.ColorRole.AlternateBase does for some reason, but not on macOS.
self.select_color: QColor
if sys.platform == "win32":
self.select_color = QPalette.color(
self.palette(),
QPalette.ColorGroup.Active,
QPalette.ColorRole.AlternateBase,
)
self.select_color.setHsl(
self.select_color.hslHue(),
self.select_color.hslSaturation(),
max(self.select_color.lightness(), 100),
255,
)
else:
self.select_color = QPalette.color(
self.palette(),
QPalette.ColorGroup.Active,
QPalette.ColorRole.Accent,
)
self.select_color_faded: QColor = QColor(self.select_color)
self.select_color_faded.setHsl(
@@ -39,11 +57,26 @@ class ThumbButton(QPushButtonWrapper):
127,
)
self.hover_color: QColor = QPalette.color(
self.palette(),
QPalette.ColorGroup.Active,
QPalette.ColorRole.Accent,
)
self.hover_color: QColor
if sys.platform == "win32":
self.hover_color = QPalette.color(
self.palette(),
QPalette.ColorGroup.Active,
QPalette.ColorRole.AlternateBase,
)
self.hover_color.setHsl(
self.hover_color.hslHue(),
self.hover_color.hslSaturation(),
max(self.hover_color.lightness(), 100),
255,
)
else:
self.hover_color = QPalette.color(
self.palette(),
QPalette.ColorGroup.Active,
QPalette.ColorRole.Accent,
)
self.hover_color.setHsl(
self.hover_color.hslHue(),
self.hover_color.hslSaturation(),