Rewrite the tree view focus switch (#1949)

This commit is contained in:
Veronica Berglyd Olsen
2024-07-03 19:39:29 +02:00
parent 42b1e6a559
commit 5e8892ee7c
+27 -12
View File
@@ -1006,21 +1006,34 @@ class GuiMain(QMainWindow):
def _switchFocus(self, paneNo: nwFocus) -> None: def _switchFocus(self, paneNo: nwFocus) -> None:
"""Switch focus between main GUI views.""" """Switch focus between main GUI views."""
if paneNo == nwFocus.TREE: if paneNo == nwFocus.TREE:
if self.projStack.currentWidget() is self.projView: # Decision Matrix
if self.projView.treeHasFocus(): # vM | vP | fP | vN | fN | Focus
self._changeView(nwView.NOVEL) # ----|----|----|----|----|---------
self.novelView.setTreeFocus() # T | T | T | F | F | Novel
else: # T | T | F | F | F | Project
self.projView.setTreeFocus() # T | F | F | T | T | Project
elif self.projStack.currentWidget() is self.novelView: # T | F | F | T | F | Novel
if self.novelView.treeHasFocus(): # T | F | F | F | F | Project
self._changeView(nwView.PROJECT) # F | T | T | F | F | Project
self.projView.setTreeFocus() # F | T | F | F | F | Project
else: # F | F | F | T | T | Novel
self.novelView.setTreeFocus() # F | F | F | T | F | Novel
# F | F | F | F | F | Project
vM = self.mainStack.currentWidget() is self.splitMain
vP = self.projStack.currentWidget() is self.projView
vN = self.projStack.currentWidget() is self.novelView
fP = self.projView.treeHasFocus()
fN = self.novelView.treeHasFocus()
self._changeView(nwView.EDITOR)
if (vM and (vP and fP or vN and not fN)) or (not vM and vN):
self._changeView(nwView.NOVEL)
self.novelView.setTreeFocus()
else: else:
self._changeView(nwView.PROJECT) self._changeView(nwView.PROJECT)
self.projView.setTreeFocus() self.projView.setTreeFocus()
elif paneNo == nwFocus.DOCUMENT: elif paneNo == nwFocus.DOCUMENT:
self._changeView(nwView.EDITOR) self._changeView(nwView.EDITOR)
hasViewer = self.splitView.isVisible() hasViewer = self.splitView.isVisible()
@@ -1030,9 +1043,11 @@ class GuiMain(QMainWindow):
self.docEditor.setFocus() self.docEditor.setFocus()
else: else:
self.docEditor.setFocus() self.docEditor.setFocus()
elif paneNo == nwFocus.OUTLINE: elif paneNo == nwFocus.OUTLINE:
self._changeView(nwView.OUTLINE) self._changeView(nwView.OUTLINE)
self.outlineView.setTreeFocus() self.outlineView.setTreeFocus()
return return
@pyqtSlot(bool, bool, bool, bool) @pyqtSlot(bool, bool, bool, bool)