diff --git a/novelwriter/gui/doceditor.py b/novelwriter/gui/doceditor.py index c95023d9..52e0180a 100644 --- a/novelwriter/gui/doceditor.py +++ b/novelwriter/gui/doceditor.py @@ -1104,10 +1104,10 @@ class GuiDocEditor(QPlainTextEdit): else: self._completer.setVisible(False) - if self._doReplace and added == 1: - cursor = self.textCursor() - if self._autoReplace.process(text, cursor): - self._qDocument.syntaxHighlighter.rehighlightBlock(cursor.block()) + if self._doReplace and added == 1: + cursor = self.textCursor() + if self._autoReplace.process(text, cursor): + self._qDocument.syntaxHighlighter.rehighlightBlock(cursor.block()) return @@ -1217,7 +1217,7 @@ class GuiDocEditor(QPlainTextEdit): # Execute the context menu ctxMenu.exec(self.viewport().mapToGlobal(pos)) - ctxMenu.deleteLater() + ctxMenu.setParent(None) return diff --git a/novelwriter/gui/docviewer.py b/novelwriter/gui/docviewer.py index b43c7b7c..389aac2c 100644 --- a/novelwriter/gui/docviewer.py +++ b/novelwriter/gui/docviewer.py @@ -424,7 +424,7 @@ class GuiDocViewer(QTextBrowser): # Open the context menu ctxMenu.exec(self.viewport().mapToGlobal(point)) - ctxMenu.deleteLater() + ctxMenu.setParent(None) return diff --git a/novelwriter/gui/itemdetails.py b/novelwriter/gui/itemdetails.py index c95db8e0..feb09938 100644 --- a/novelwriter/gui/itemdetails.py +++ b/novelwriter/gui/itemdetails.py @@ -93,6 +93,7 @@ class GuiItemDetails(QWidget): self.statusData = QLabel("", self) self.statusData.setFont(fntValue) self.statusData.setAlignment(QtAlignLeft) + self.statusData.setWordWrap(True) # Class self.className = QLabel(self.tr("Class"), self) diff --git a/novelwriter/gui/projtree.py b/novelwriter/gui/projtree.py index db04e3dd..2bc13a41 100644 --- a/novelwriter/gui/projtree.py +++ b/novelwriter/gui/projtree.py @@ -955,23 +955,18 @@ class GuiProjectTree(QTreeView): if model := self._getModel(): if point is None: point = self.visualRect(self.currentIndex()).center() - - if ( - point is not None - and (node := self._getNode(self.currentIndex())) - and (indices := self._selectedRows()) - ): - ctxMenu = _TreeContextMenu(self, model, node, indices) - if node is SHARED.project.tree.trash: - ctxMenu.buildTrashMenu() - elif len(indices) > 1: - ctxMenu.buildMultiSelectMenu() - else: - ctxMenu.buildSingleSelectMenu() - - ctxMenu.exec(self.viewport().mapToGlobal(point)) - ctxMenu.deleteLater() - + if point is not None: + index = self.indexAt(point) + if (node := self._getNode(index)) and (indices := self._selectedRows()): + ctxMenu = _TreeContextMenu(self, model, node, indices) + if node is SHARED.project.tree.trash: + ctxMenu.buildTrashMenu() + elif len(indices) > 1: + ctxMenu.buildMultiSelectMenu() + else: + ctxMenu.buildSingleSelectMenu() + ctxMenu.exec(self.viewport().mapToGlobal(point)) + ctxMenu.setParent(None) return ## diff --git a/novelwriter/tools/welcome.py b/novelwriter/tools/welcome.py index 74f57971..837e76e5 100644 --- a/novelwriter/tools/welcome.py +++ b/novelwriter/tools/welcome.py @@ -376,7 +376,7 @@ class _OpenProjectPage(QWidget): action = ctxMenu.addAction(self.tr("Remove Project")) action.triggered.connect(self._deleteSelectedItem) ctxMenu.exec(self.mapToGlobal(pos)) - ctxMenu.deleteLater() + ctxMenu.setParent(None) return ## diff --git a/tests/test_gui/test_gui_doceditor.py b/tests/test_gui/test_gui_doceditor.py index 611f0145..efd4345e 100644 --- a/tests/test_gui/test_gui_doceditor.py +++ b/tests/test_gui/test_gui_doceditor.py @@ -332,6 +332,7 @@ def testGuiEditor_MetaData(qtbot, nwGUI, projPath, mockRnd): def testGuiEditor_ContextMenu(monkeypatch, qtbot, nwGUI, projPath, mockRnd): """Test the editor context menu.""" monkeypatch.setattr(QMenu, "exec", lambda *a: None) + monkeypatch.setattr(QMenu, "setParent", lambda *a: None) buildTestProject(nwGUI, projPath) assert nwGUI.openDocument(C.hSceneDoc) is True @@ -471,6 +472,7 @@ def testGuiEditor_ContextMenu(monkeypatch, qtbot, nwGUI, projPath, mockRnd): def testGuiEditor_SpellChecking(qtbot, monkeypatch, nwGUI, projPath, ipsumText, mockRnd): """Test the document spell checker.""" monkeypatch.setattr(QMenu, "exec", lambda *a: None) + monkeypatch.setattr(QMenu, "setParent", lambda *a: None) buildTestProject(nwGUI, projPath) assert nwGUI.openDocument(C.hSceneDoc) is True diff --git a/tests/test_tools/test_tools_welcome.py b/tests/test_tools/test_tools_welcome.py index eb30fcb7..e827d0cb 100644 --- a/tests/test_tools/test_tools_welcome.py +++ b/tests/test_tools/test_tools_welcome.py @@ -70,6 +70,7 @@ def testToolWelcome_Main(qtbot: QtBot, monkeypatch, nwGUI, fncPath): def testToolWelcome_Open(qtbot: QtBot, monkeypatch, nwGUI, fncPath): """Test the open tab in the Welcome window.""" monkeypatch.setattr(QMenu, "exec", lambda *a: None) + monkeypatch.setattr(QMenu, "setParent", lambda *a: None) CONFIG.recentProjects.update("/stuff/project_one", "Project One", 12345, 1690000000) CONFIG.recentProjects.update("/stuff/project_two", "Project Two", 54321, 1700000000)