From 6d2e9d8a04ef01b5c6088608d69c514117fe4fbf Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Tue, 29 Apr 2025 23:45:05 +0200 Subject: [PATCH] Refresh novel view on count method change --- novelwriter/gui/noveltree.py | 15 ++++++++++----- novelwriter/guimain.py | 4 +++- tests/test_gui/test_gui_guimain.py | 1 + tests/test_gui/test_gui_noveltree.py | 2 +- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/novelwriter/gui/noveltree.py b/novelwriter/gui/noveltree.py index ac98cd83..eb07ddf9 100644 --- a/novelwriter/gui/noveltree.py +++ b/novelwriter/gui/noveltree.py @@ -80,6 +80,7 @@ class GuiNovelView(QWidget): # Function Mappings self.setActive = self.novelBar.setActive self.getSelectedHandle = self.novelTree.getSelectedHandle + self.refreshCurrentTree = self.novelBar.forceRefreshNovelTree return @@ -209,7 +210,7 @@ class GuiNovelToolBar(QWidget): # Refresh Button self.tbRefresh = NIconToolButton(self, iSz) self.tbRefresh.setToolTip(self.tr("Refresh")) - self.tbRefresh.clicked.connect(self._forceRefreshNovelTree) + self.tbRefresh.clicked.connect(self.forceRefreshNovelTree) # More Options Menu self.mMore = QMenu(self) @@ -274,7 +275,7 @@ class GuiNovelToolBar(QWidget): self.novelValue.updateTheme() self.tbNovel.setVisible(self.novelValue.count() > 1) - self._forceRefreshNovelTree() + self.forceRefreshNovelTree() return @@ -305,7 +306,7 @@ class GuiNovelToolBar(QWidget): self.aLastCol[colType].setChecked(True) self.novelView.novelTree.setLastColType(colType) if doRefresh: - self._forceRefreshNovelTree() + self.forceRefreshNovelTree() self.novelView.novelTree.resizeColumns() return @@ -323,11 +324,11 @@ class GuiNovelToolBar(QWidget): return ## - # Private Slots + # Public Slots ## @pyqtSlot() - def _forceRefreshNovelTree(self) -> None: + def forceRefreshNovelTree(self) -> None: """Rebuild the current tree.""" if tHandle := self.novelValue.handle: self.novelView.setCurrentNovel(tHandle) @@ -335,6 +336,10 @@ class GuiNovelToolBar(QWidget): self._refresh[tHandle] = False return + ## + # Private Slots + ## + @pyqtSlot(str) def _refreshNovelTree(self, tHandle: str) -> None: """Refresh or schedule refresh of a novel tree.""" diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py index ee32c547..f946a32a 100644 --- a/novelwriter/guimain.py +++ b/novelwriter/guimain.py @@ -1048,8 +1048,10 @@ class GuiMain(QMainWindow): self.initMain() self.saveDocument() - if tree: + if tree and not theme: + # These are also updated by a theme refresh SHARED.project.tree.refreshAllItems() + self.novelView.refreshCurrentTree() if theme: SHARED.theme.loadTheme() diff --git a/tests/test_gui/test_gui_guimain.py b/tests/test_gui/test_gui_guimain.py index 24694ffe..6fda9b6a 100644 --- a/tests/test_gui/test_gui_guimain.py +++ b/tests/test_gui/test_gui_guimain.py @@ -184,6 +184,7 @@ def testGuiMain_UpdateTheme(qtbot, nwGUI): CONFIG.guiSyntax = "default_dark" mainTheme.loadTheme() mainTheme.loadSyntax() + nwGUI._processConfigChanges(False, True, False, False) nwGUI._processConfigChanges(True, True, True, True) syntax = SHARED.theme.syntaxTheme diff --git a/tests/test_gui/test_gui_noveltree.py b/tests/test_gui/test_gui_noveltree.py index 2da937bd..cd726e0a 100644 --- a/tests/test_gui/test_gui_noveltree.py +++ b/tests/test_gui/test_gui_noveltree.py @@ -93,7 +93,7 @@ def testGuiNovelView_Content(qtbot, monkeypatch, nwGUI, projPath, mockRnd): assert novelTree._getModel() is None # Reload - novelBar._forceRefreshNovelTree() + novelView.refreshCurrentTree() model = novelTree._getModel() assert isinstance(model, NovelModel)