From e0d21c14a3f9483cf100adef2e581bd3b1db51d4 Mon Sep 17 00:00:00 2001 From: Travis Abendshien <46939827+CyanVoxel@users.noreply.github.com> Date: Thu, 30 Jan 2025 22:09:50 -0800 Subject: [PATCH] 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 --- tagstudio/src/qt/widgets/thumb_button.py | 53 +++++++++++++++++++----- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/tagstudio/src/qt/widgets/thumb_button.py b/tagstudio/src/qt/widgets/thumb_button.py index cf8dae372..cfd455358 100644 --- a/tagstudio/src/qt/widgets/thumb_button.py +++ b/tagstudio/src/qt/widgets/thumb_button.py @@ -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 @@ def __init__(self, parent: QWidget, thumb_size: tuple[int, int]) -> None: # noq 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 @@ def __init__(self, parent: QWidget, thumb_size: tuple[int, int]) -> None: # noq 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(),