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: