Add some fixes to keep novel tree active handle up to date

This commit is contained in:
Veronica Berglyd Olsen
2022-06-15 19:47:04 +02:00
parent 469275eea5
commit bb85232ea7
2 changed files with 13 additions and 3 deletions
+9
View File
@@ -345,6 +345,7 @@ class GuiNovelTree(QTreeWidget):
self._treeMap = {} self._treeMap = {}
self._lastBuild = 0 self._lastBuild = 0
self._lastCol = NovelTreeColumn.POV self._lastCol = NovelTreeColumn.POV
self._actHandle = None
# Cached Strings # Cached Strings
self._povLabel = trConst(nwLabels.KEY_NAME[nwKeyWords.POV_KEY]) self._povLabel = trConst(nwLabels.KEY_NAME[nwKeyWords.POV_KEY])
@@ -509,6 +510,9 @@ class GuiNovelTree(QTreeWidget):
def setActiveHandle(self, tHandle): def setActiveHandle(self, tHandle):
"""Highlight the rows associated with a given handle. """Highlight the rows associated with a given handle.
""" """
tStart = time()
self._actHandle = tHandle
for i in range(self.topLevelItemCount()): for i in range(self.topLevelItemCount()):
tItem = self.topLevelItem(i) tItem = self.topLevelItem(i)
if tItem.data(self.C_TITLE, self.D_HANDLE) == tHandle: 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_WORDS, self.palette().base())
tItem.setBackground(self.C_EXTRA, self.palette().base()) tItem.setBackground(self.C_EXTRA, self.palette().base())
tItem.setBackground(self.C_MORE, self.palette().base()) tItem.setBackground(self.C_MORE, self.palette().base())
logger.verbose("Highlighted Novel Tree in %.3f ms", (time() - tStart)*1000)
return return
## ##
@@ -632,6 +639,8 @@ class GuiNovelTree(QTreeWidget):
self._treeMap[tKey] = newItem self._treeMap[tKey] = newItem
self.addTopLevelItem(newItem) self.addTopLevelItem(newItem)
self.setActiveHandle(self._actHandle)
logger.verbose("Novel Tree built in %.3f ms", (time() - tStart)*1000) logger.verbose("Novel Tree built in %.3f ms", (time() - tStart)*1000)
self._lastBuild = time() self._lastBuild = time()
+4 -3
View File
@@ -558,7 +558,7 @@ class GuiMain(QMainWindow):
# Document Actions # Document Actions
## ##
def closeDocument(self): def closeDocument(self, beforeOpen=False):
"""Close the document and clear the editor and title field. """Close the document and clear the editor and title field.
""" """
if not self.hasProject: if not self.hasProject:
@@ -573,7 +573,8 @@ class GuiMain(QMainWindow):
if self.docEditor.docChanged(): if self.docEditor.docChanged():
self.saveDocument() self.saveDocument()
self.docEditor.clearEditor() self.docEditor.clearEditor()
self.novelView.setActiveHandle(None) if not beforeOpen:
self.novelView.setActiveHandle(None)
return True return True
@@ -588,7 +589,7 @@ class GuiMain(QMainWindow):
logger.debug("Requested item '%s' is not a document", tHandle) logger.debug("Requested item '%s' is not a document", tHandle)
return False return False
self.closeDocument() self.closeDocument(beforeOpen=True)
self._changeView(nwView.EDITOR) self._changeView(nwView.EDITOR)
if self.docEditor.loadText(tHandle, tLine): if self.docEditor.loadText(tHandle, tLine):
if changeFocus: if changeFocus: