From bb85232ea7e16a3156fa88790249640c3c3bd7fc Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 15 Jun 2022 19:47:04 +0200 Subject: [PATCH] Add some fixes to keep novel tree active handle up to date --- novelwriter/gui/noveltree.py | 9 +++++++++ novelwriter/guimain.py | 7 ++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/novelwriter/gui/noveltree.py b/novelwriter/gui/noveltree.py index 9dd0f78c..b96f5331 100644 --- a/novelwriter/gui/noveltree.py +++ b/novelwriter/gui/noveltree.py @@ -345,6 +345,7 @@ class GuiNovelTree(QTreeWidget): self._treeMap = {} self._lastBuild = 0 self._lastCol = NovelTreeColumn.POV + self._actHandle = None # Cached Strings self._povLabel = trConst(nwLabels.KEY_NAME[nwKeyWords.POV_KEY]) @@ -509,6 +510,9 @@ class GuiNovelTree(QTreeWidget): def setActiveHandle(self, tHandle): """Highlight the rows associated with a given handle. """ + tStart = time() + + self._actHandle = tHandle for i in range(self.topLevelItemCount()): tItem = self.topLevelItem(i) if tItem.data(self.C_TITLE, self.D_HANDLE) == tHandle: @@ -521,6 +525,9 @@ class GuiNovelTree(QTreeWidget): tItem.setBackground(self.C_WORDS, self.palette().base()) tItem.setBackground(self.C_EXTRA, self.palette().base()) tItem.setBackground(self.C_MORE, self.palette().base()) + + logger.verbose("Highlighted Novel Tree in %.3f ms", (time() - tStart)*1000) + return ## @@ -632,6 +639,8 @@ class GuiNovelTree(QTreeWidget): self._treeMap[tKey] = newItem self.addTopLevelItem(newItem) + self.setActiveHandle(self._actHandle) + logger.verbose("Novel Tree built in %.3f ms", (time() - tStart)*1000) self._lastBuild = time() diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py index 5cbecf7a..e34b873e 100644 --- a/novelwriter/guimain.py +++ b/novelwriter/guimain.py @@ -558,7 +558,7 @@ class GuiMain(QMainWindow): # Document Actions ## - def closeDocument(self): + def closeDocument(self, beforeOpen=False): """Close the document and clear the editor and title field. """ if not self.hasProject: @@ -573,7 +573,8 @@ class GuiMain(QMainWindow): if self.docEditor.docChanged(): self.saveDocument() self.docEditor.clearEditor() - self.novelView.setActiveHandle(None) + if not beforeOpen: + self.novelView.setActiveHandle(None) return True @@ -588,7 +589,7 @@ class GuiMain(QMainWindow): logger.debug("Requested item '%s' is not a document", tHandle) return False - self.closeDocument() + self.closeDocument(beforeOpen=True) self._changeView(nwView.EDITOR) if self.docEditor.loadText(tHandle, tLine): if changeFocus: