Fix missing colour updates on theme switch (#3123)
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -62,6 +62,7 @@ __pycache__
|
||||
# IDE
|
||||
.vscode
|
||||
.ruff_cache
|
||||
.nvimlog
|
||||
|
||||
# No AI files
|
||||
AGENTS.md
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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."""
|
||||
|
||||
Reference in New Issue
Block a user