From 069e35565fdbb021f5d79641d6f7977200e81306 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 3 Jul 2024 18:18:41 +0200 Subject: [PATCH] Refresh coloured labels when theme change (#1951) --- novelwriter/extensions/configlayout.py | 21 ++++++++++++++++++--- novelwriter/gui/doceditor.py | 6 +++--- novelwriter/gui/docviewer.py | 4 +++- novelwriter/gui/outline.py | 1 + 4 files changed, 25 insertions(+), 7 deletions(-) diff --git a/novelwriter/extensions/configlayout.py b/novelwriter/extensions/configlayout.py index 53354b4b..42a2e29c 100644 --- a/novelwriter/extensions/configlayout.py +++ b/novelwriter/extensions/configlayout.py @@ -281,13 +281,28 @@ class NColourLabel(QLabel): return + def setTextColors(self, *, color: QColor | None = None, faded: QColor | None = None) -> None: + """Set or update the text colours.""" + self._color = color or self._color + self._faded = faded or self._faded + self._refeshTextColor() + return + def setColorState(self, state: bool) -> None: """Change the colour state.""" if self._state is not state: self._state = state - colour = self.palette() - colour.setColor(QPalette.ColorRole.WindowText, self._color if state else self._faded) - self.setPalette(colour) + self._refeshTextColor() + return + + def _refeshTextColor(self) -> None: + """Refresh the colour of the text on the label.""" + palette = self.palette() + palette.setColor( + QPalette.ColorRole.WindowText, + self._color if self._state else self._faded, + ) + self.setPalette(palette) return diff --git a/novelwriter/gui/doceditor.py b/novelwriter/gui/doceditor.py index 39adc29d..7722339b 100644 --- a/novelwriter/gui/doceditor.py +++ b/novelwriter/gui/doceditor.py @@ -2919,10 +2919,10 @@ class GuiDocEditHeader(QWidget): palette.setColor(QPalette.ColorRole.Window, SHARED.theme.colBack) palette.setColor(QPalette.ColorRole.WindowText, SHARED.theme.colText) palette.setColor(QPalette.ColorRole.Text, SHARED.theme.colText) - self.setPalette(palette) - self.itemTitle.setPalette(palette) - + self.itemTitle.setTextColors( + color=palette.windowText().color(), faded=SHARED.theme.fadedText + ) return def changeFocusState(self, state: bool) -> None: diff --git a/novelwriter/gui/docviewer.py b/novelwriter/gui/docviewer.py index b28411ab..f013db0b 100644 --- a/novelwriter/gui/docviewer.py +++ b/novelwriter/gui/docviewer.py @@ -741,7 +741,9 @@ class GuiDocViewHeader(QWidget): palette.setColor(QPalette.ColorRole.WindowText, SHARED.theme.colText) palette.setColor(QPalette.ColorRole.Text, SHARED.theme.colText) self.setPalette(palette) - self.itemTitle.setPalette(palette) + self.itemTitle.setTextColors( + color=palette.windowText().color(), faded=SHARED.theme.fadedText + ) return def changeFocusState(self, state: bool) -> None: diff --git a/novelwriter/gui/outline.py b/novelwriter/gui/outline.py index 3a411f35..054f0fb4 100644 --- a/novelwriter/gui/outline.py +++ b/novelwriter/gui/outline.py @@ -268,6 +268,7 @@ class GuiOutlineToolBar(QToolBar): self.aExport.setIcon(SHARED.theme.getIcon("export")) self.tbColumns.setIcon(SHARED.theme.getIcon("menu")) self.tbColumns.setStyleSheet("QToolButton::menu-indicator {image: none;}") + self.novelLabel.setTextColors(color=self.palette().windowText().color()) return def populateNovelList(self) -> None: