Fix changing disabled colors overriding non-disabled colors

This commit is contained in:
Kovid Goyal 2024-03-01 19:40:43 +05:30
parent a8a3bc9844
commit eb05330943
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 14 additions and 9 deletions

View File

@ -12,7 +12,8 @@ from qt.core import (
from calibre.gui2 import Application, choose_files, choose_save_file, gprefs from calibre.gui2 import Application, choose_files, choose_save_file, gprefs
from calibre.gui2.palette import ( from calibre.gui2.palette import (
default_dark_palette, default_light_palette, palette_colors, palette_from_dict, default_dark_palette, default_light_palette, is_foreground_color, palette_colors,
palette_from_dict,
) )
from calibre.gui2.widgets2 import ColorButton, Dialog from calibre.gui2.widgets2 import ColorButton, Dialog
@ -74,7 +75,7 @@ class PaletteColors(QWidget):
self.default_palette = default_palette self.default_palette = default_palette
for key, desc in palette_colors().items(): for key, desc in palette_colors().items():
if 'Text' in key: if is_foreground_color(key):
self.foreground_colors[key] = desc self.foreground_colors[key] = desc
elif 'Link' in key: elif 'Link' in key:
self.link_colors[key] = desc self.link_colors[key] = desc
@ -91,8 +92,8 @@ class PaletteColors(QWidget):
ans.setFont(f) ans.setFont(f)
return ans return ans
def c(x, desc): def c(x, desc, group=''):
w = Color(x, desc, self, palette, default_palette, mode_name) w = Color(x, desc, self, palette, default_palette, mode_name, group=group)
l.addWidget(w) l.addWidget(w)
self.colors.append(w) self.colors.append(w)
@ -106,7 +107,7 @@ class PaletteColors(QWidget):
l.addWidget(header(_('Foreground (text) colors when disabled'))) l.addWidget(header(_('Foreground (text) colors when disabled')))
for x, desc in self.foreground_colors.items(): for x, desc in self.foreground_colors.items():
c(x, desc) c(x, desc, group='disabled')
l.addWidget(header(_('Link colors'))) l.addWidget(header(_('Link colors')))
for x, desc in self.link_colors.items(): for x, desc in self.link_colors.items():

View File

@ -140,22 +140,26 @@ def palette_colors():
} }
def is_foreground_color(key: str) -> bool:
return 'Text' in key
def palette_from_dict(data: dict[str, str], default_palette: QPalette) -> QPalette: def palette_from_dict(data: dict[str, str], default_palette: QPalette) -> QPalette:
def s(key, group=QPalette.ColorGroup.All): def s(key, group=QPalette.ColorGroup.All):
role = getattr(QPalette.ColorRole, key) role = getattr(QPalette.ColorRole, key)
grp = '' grp = ''
if group == QPalette.ColorGroup.Disabled: if group == QPalette.ColorGroup.Disabled:
grp = 'disabled-' grp = '-disabled'
c = QColor.fromString(data.get(grp + key, '')) c = QColor.fromString(data.get(key + grp, ''))
if c.isValid(): if c.isValid():
p.setColor(group, role, c) p.setColor(group, role, c)
p = QPalette() p = QPalette()
for key in palette_colors(): for key in palette_colors():
s(key) s(key)
for key in ('Text', 'ButtonText', 'HighlightedText'): if is_foreground_color(key):
s(key, QPalette.ColorGroup.Disabled) s(key, QPalette.ColorGroup.Disabled)
return p.resolve(default_palette) return p.resolve(default_palette)