diff --git a/novelwriter/gui/outline.py b/novelwriter/gui/outline.py
index 3c31133a..652af9d1 100644
--- a/novelwriter/gui/outline.py
+++ b/novelwriter/gui/outline.py
@@ -73,6 +73,9 @@ class GuiOutline(QWidget):
self.setLayout(self.outerBox)
+ # Function Mappings
+ self.getSelectedHandle = self.outlineView.getSelectedHandle
+
return
##
@@ -99,6 +102,12 @@ class GuiOutline(QWidget):
self.outlineView.refreshTree(overRide=overRide, novelChanged=novelChanged)
return
+ def treeFocus(self):
+ return self.outlineView.hasFocus()
+
+ def setTreeFocus(self):
+ return self.outlineView.setFocus()
+
# END Class GuiOutline
diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py
index 645990e9..e30654ee 100644
--- a/novelwriter/guimain.py
+++ b/novelwriter/guimain.py
@@ -780,7 +780,7 @@ class GuiMain(QMainWindow):
tHandle = self.treeView.getSelectedHandle()
elif self.novelView.hasFocus():
tHandle, tLine = self.novelView.getSelectedHandle()
- elif self.projView.hasFocus():
+ elif self.projView.treeFocus():
tHandle, tLine = self.projView.getSelectedHandle()
else:
logger.warning("No item selected")
@@ -1221,7 +1221,7 @@ class GuiMain(QMainWindow):
self.docViewer.setFocus()
elif paneNo == nwWidget.OUTLINE:
self._changeView(nwView.OUTLINE)
- self.projView.setFocus()
+ self.projView.setTreeFocus()
return
def closeDocEditor(self):
diff --git a/tests/test_gui/test_gui_guimain.py b/tests/test_gui/test_gui_guimain.py
index ddb4f09b..cac62ddf 100644
--- a/tests/test_gui/test_gui_guimain.py
+++ b/tests/test_gui/test_gui_guimain.py
@@ -111,12 +111,12 @@ def testGuiMain_ProjectTreeItems(qtbot, monkeypatch, nwGUI, fncProj, mockRnd):
# Project Outline has focus
nwGUI.switchFocus(nwWidget.OUTLINE)
with monkeypatch.context() as mp:
- mp.setattr(GuiOutline, "hasFocus", lambda *a: True)
+ mp.setattr(GuiOutline, "treeFocus", lambda *a: True)
assert nwGUI.docEditor.docHandle() is None
- actItem = nwGUI.projView.topLevelItem(0)
+ actItem = nwGUI.projView.outlineView.topLevelItem(0)
chpItem = actItem.child(0)
selItem = chpItem.child(0)
- nwGUI.projView.setCurrentItem(selItem)
+ nwGUI.projView.outlineView.setCurrentItem(selItem)
nwGUI._keyPressReturn()
assert nwGUI.docEditor.docHandle() == sHandle
assert nwGUI.closeDocument() is True
diff --git a/tests/test_gui/test_gui_outline.py b/tests/test_gui/test_gui_outline.py
index 40c58388..02dd1041 100644
--- a/tests/test_gui/test_gui_outline.py
+++ b/tests/test_gui/test_gui_outline.py
@@ -45,69 +45,72 @@ def testGuiOutline_Main(qtbot, monkeypatch, nwGUI, nwLipsum):
nwGUI.rebuildIndex()
nwGUI.mainStack.setCurrentIndex(nwGUI.idxOutlineView)
- assert nwGUI.projView.topLevelItemCount() > 0
+ outlineView = nwGUI.projView.outlineView
+ outlineData = nwGUI.projView.outlineData
+
+ assert outlineView.topLevelItemCount() > 0
# Context Menu
- nwGUI.projView._headerRightClick(QPoint(1, 1))
- nwGUI.projView.headerMenu.actionMap[nwOutline.CCOUNT].activate(QAction.Trigger)
- nwGUI.projView.headerMenu.close()
- qtbot.mouseClick(nwGUI.projView, Qt.LeftButton)
+ outlineView._headerRightClick(QPoint(1, 1))
+ outlineView.headerMenu.actionMap[nwOutline.CCOUNT].activate(QAction.Trigger)
+ outlineView.headerMenu.close()
+ qtbot.mouseClick(outlineView, Qt.LeftButton)
- nwGUI.projView._loadHeaderState()
- assert not nwGUI.projView._colHidden[nwOutline.CCOUNT]
+ outlineView._loadHeaderState()
+ assert not outlineView._colHidden[nwOutline.CCOUNT]
# First Item
nwGUI.rebuildOutline()
- selItem = nwGUI.projView.topLevelItem(0)
+ selItem = outlineView.topLevelItem(0)
assert isinstance(selItem, QTreeWidgetItem)
- nwGUI.projView.setCurrentItem(selItem)
- assert nwGUI.projMeta.titleLabel.text() == "Title"
- assert nwGUI.projMeta.titleValue.text() == "Lorem Ipsum"
- assert nwGUI.projMeta.fileValue.text() == "Lorem Ipsum"
- assert nwGUI.projMeta.itemValue.text() == "Finished"
+ outlineView.setCurrentItem(selItem)
+ assert outlineData.titleLabel.text() == "Title"
+ assert outlineData.titleValue.text() == "Lorem Ipsum"
+ assert outlineData.fileValue.text() == "Lorem Ipsum"
+ assert outlineData.itemValue.text() == "Finished"
- assert nwGUI.projMeta.cCValue.text() == "230"
- assert nwGUI.projMeta.wCValue.text() == "40"
- assert nwGUI.projMeta.pCValue.text() == "3"
+ assert outlineData.cCValue.text() == "230"
+ assert outlineData.wCValue.text() == "40"
+ assert outlineData.pCValue.text() == "3"
# Scene One
- actItem = nwGUI.projView.topLevelItem(1)
+ actItem = outlineView.topLevelItem(1)
chpItem = actItem.child(0)
selItem = chpItem.child(0)
- nwGUI.projView.setCurrentItem(selItem)
- tHandle, tLine = nwGUI.projView.getSelectedHandle()
+ outlineView.setCurrentItem(selItem)
+ tHandle, tLine = outlineView.getSelectedHandle()
assert tHandle == "88243afbe5ed8"
assert tLine == 0
- assert nwGUI.projMeta.titleLabel.text() == "Scene"
- assert nwGUI.projMeta.titleValue.text() == "Scene One"
- assert nwGUI.projMeta.fileValue.text() == "Scene One"
- assert nwGUI.projMeta.itemValue.text() == "Finished"
+ assert outlineData.titleLabel.text() == "Scene"
+ assert outlineData.titleValue.text() == "Scene One"
+ assert outlineData.fileValue.text() == "Scene One"
+ assert outlineData.itemValue.text() == "Finished"
# Click POV Link
- assert nwGUI.projMeta.povKeyValue.text() == "Bod"
- nwGUI.projMeta._tagClicked("#pov=Bod")
+ assert outlineData.povKeyValue.text() == "Bod"
+ outlineData._tagClicked("#pov=Bod")
assert nwGUI.docViewer.docHandle() == "4c4f28287af27"
# Scene One, Section Two
- actItem = nwGUI.projView.topLevelItem(1)
+ actItem = outlineView.topLevelItem(1)
chpItem = actItem.child(0)
scnItem = chpItem.child(0)
selItem = scnItem.child(0)
- nwGUI.projView.setCurrentItem(selItem)
- tHandle, tLine = nwGUI.projView.getSelectedHandle()
+ outlineView.setCurrentItem(selItem)
+ tHandle, tLine = outlineView.getSelectedHandle()
assert tHandle == "88243afbe5ed8"
assert tLine == 12
- assert nwGUI.projMeta.titleLabel.text() == "Section"
- assert nwGUI.projMeta.titleValue.text() == "Scene One, Section Two"
- assert nwGUI.projMeta.fileValue.text() == "Scene One"
- assert nwGUI.projMeta.itemValue.text() == "Finished"
+ assert outlineData.titleLabel.text() == "Section"
+ assert outlineData.titleValue.text() == "Scene One, Section Two"
+ assert outlineData.fileValue.text() == "Scene One"
+ assert outlineData.itemValue.text() == "Finished"
- nwGUI.projView._treeDoubleClick(selItem, 0)
+ outlineView._treeDoubleClick(selItem, 0)
assert nwGUI.docEditor.docHandle() == "88243afbe5ed8"
# qtbot.stopForInteraction()