From eab8bb2351bc1f0d8df80e5c64f87d334b042419 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Tue, 20 Feb 2024 12:48:14 +0100 Subject: [PATCH] Block welcome dialog open button when project list is not visible --- novelwriter/tools/welcome.py | 9 ++++++++- tests/test_tools/test_tools_welcome.py | 12 ++++++++++-- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/novelwriter/tools/welcome.py b/novelwriter/tools/welcome.py index d0085f38..ba1f9f9b 100644 --- a/novelwriter/tools/welcome.py +++ b/novelwriter/tools/welcome.py @@ -108,7 +108,7 @@ class GuiWelcome(QDialog): # ======= self.btnBox = QDialogButtonBox(QDialogButtonBox.Open | QDialogButtonBox.Cancel, self) - self.btnBox.accepted.connect(self.tabOpen.openSelectedItem) + self.btnBox.accepted.connect(self._openSelectedItem) self.btnBox.rejected.connect(self.close) self.newButton = self.btnBox.addButton(self.tr("New Project"), QDialogButtonBox.ActionRole) @@ -195,6 +195,13 @@ class GuiWelcome(QDialog): self._openProjectPath(path) return + @pyqtSlot() + def _openSelectedItem(self) -> None: + """Open the currently selected project item.""" + if self.mainStack.currentWidget() == self.tabOpen: + self.tabOpen.openSelectedItem() + return + @pyqtSlot(Path) def _openProjectPath(self, path: Path) -> None: """Emit a project open signal.""" diff --git a/tests/test_tools/test_tools_welcome.py b/tests/test_tools/test_tools_welcome.py index 96ed814c..b3a566d7 100644 --- a/tests/test_tools/test_tools_welcome.py +++ b/tests/test_tools/test_tools_welcome.py @@ -27,7 +27,7 @@ from datetime import datetime from pytestqt.qtbot import QtBot from PyQt5.QtCore import QPoint, Qt -from PyQt5.QtWidgets import QAction, QFileDialog, QMenu +from PyQt5.QtWidgets import QAction, QDialogButtonBox, QFileDialog, QMenu from novelwriter import CONFIG, SHARED from novelwriter.enum import nwItemClass @@ -103,7 +103,7 @@ def testToolWelcome_Open(qtbot: QtBot, monkeypatch, nwGUI, fncPath): qtbot.mouseClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10) assert tabOpen.selectedPath.text() == "Path: /stuff/project_one" - # Double Click item + # Double click item qtbot.mouseClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10) with monkeypatch.context() as mp: mp.setattr(welcome, "close", lambda *a: None) @@ -111,6 +111,14 @@ def testToolWelcome_Open(qtbot: QtBot, monkeypatch, nwGUI, fncPath): qtbot.mouseDClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10) assert signal.args and signal.args[0] == Path("/stuff/project_one") + # Press open button + qtbot.mouseClick(vPort, Qt.MouseButton.LeftButton, pos=posTwo, delay=10) + with monkeypatch.context() as mp: + mp.setattr(welcome, "close", lambda *a: None) + with qtbot.waitSignal(welcome.openProjectRequest, timeout=5000) as signal: + welcome.btnBox.button(QDialogButtonBox.StandardButton.Open).click() + assert signal.args and signal.args[0] == Path("/stuff/project_one") + # Context Menu def getMenuForPos(pos: QPoint) -> QMenu | None: nonlocal tabOpen