Fix missing colour updates on theme switch (#3123)

This commit is contained in:
Veronica Berglyd Olsen
2026-10-31 20:02:22 +01:00
parent 28c59e902c
commit 8c3fc3f412
5 changed files with 25 additions and 12 deletions

1
.gitignore vendored
View File

@@ -62,6 +62,7 @@ __pycache__
# IDE
.vscode
.ruff_cache
.nvimlog
# No AI files
AGENTS.md

View File

@@ -179,6 +179,7 @@ class GuiDocToolBar(QWidget):
self.tbItalicMD.refreshTheme()
self.tbStrikeMD.refreshTheme()
self.tbMarkMD.refreshTheme()
self.tbLinkMD.refreshTheme()
self.tbBold.refreshTheme()
self.tbItalic.refreshTheme()
self.tbStrike.refreshTheme()
@@ -186,6 +187,11 @@ class GuiDocToolBar(QWidget):
self.tbMark.refreshTheme()
self.tbSuperscript.refreshTheme()
self.tbSubscript.refreshTheme()
self.tbListU.refreshTheme()
self.tbListO.refreshTheme()
self.tbAlignLeft.refreshTheme()
self.tbAlignCenter.refreshTheme()
self.tbAlignRight.refreshTheme()
##
# Private Slots

View File

@@ -288,20 +288,9 @@ class OutlineModel(QAbstractTableModel):
sLevels={k: trConst(v) for k, v in nwStyles.T_LABEL.items()},
)
# Colours
theme = SHARED.theme
self._styles: dict[int, NodeStyle] = {}
for key in nwStyles.H_LEVEL.values():
color = theme.getStructureColor(key)
border = QColor(color)
border.setAlphaF(0.7)
background = QColor(color)
background.setAlphaF(0.1)
highlight = QColor(color)
highlight.setAlphaF(0.2)
self._styles[key] = NodeStyle(border, background, highlight)
self._nodes: list[OutlineNode] = []
self.updateTheme()
def __del__(self) -> None: # pragma: no cover
"""Class destructor."""
@@ -351,6 +340,19 @@ class OutlineModel(QAbstractTableModel):
# Methods
##
def updateTheme(self) -> None:
"""Refresh the level colours from the theme."""
theme = SHARED.theme
for key in nwStyles.H_LEVEL.values():
color = theme.getStructureColor(key)
border = QColor(color)
border.setAlphaF(0.7)
background = QColor(color)
background.setAlphaF(0.1)
highlight = QColor(color)
highlight.setAlphaF(0.2)
self._styles[key] = NodeStyle(border, background, highlight)
def clear(self) -> None:
"""Clear the outline."""
self.beginResetModel()

View File

@@ -671,6 +671,8 @@ class GuiStoryOutlineTree(NTreeView):
"""Update theme elements."""
self._disableNativeHighlight()
self._delegate.updateTheme()
self._model.updateTheme()
self._built = False
if viewport := self.viewport(): # pragma: no branch
viewport.update()

View File

@@ -205,12 +205,14 @@ class GuiStoryView(QWidget):
self.copyView.refreshTheme()
self.editView.refreshTheme()
self.tabMain.refreshTheme()
self.highlightValue.updateStyle()
if self._views is not None:
self._refreshTagList(force=True)
for view in self._iterViews():
view.updateTheme()
for dialog in self._iterSettingsDialogs():
dialog.updateTheme()
self._refreshCurrentView()
def initSettings(self) -> None:
"""Apply changes to the preferences."""