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
+25 -10
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
# ----|----|----|----|----|---------
# T | T | T | F | F | Novel
# T | T | F | F | F | Project
# T | F | F | T | T | Project
# T | F | F | T | F | Novel
# T | F | F | F | F | Project
# F | T | T | F | F | Project
# F | T | F | F | F | Project
# F | F | F | T | T | Novel
# 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._changeView(nwView.NOVEL)
self.novelView.setTreeFocus() self.novelView.setTreeFocus()
else:
self.projView.setTreeFocus()
elif self.projStack.currentWidget() is self.novelView:
if self.novelView.treeHasFocus():
self._changeView(nwView.PROJECT)
self.projView.setTreeFocus()
else:
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)