Change how dialogs are deleted

This commit is contained in:
Veronica Berglyd Olsen
2024-05-28 21:16:40 +02:00
parent b01a2f5abd
commit 019dd3e478
18 changed files with 27 additions and 18 deletions
+1 -1
View File
@@ -125,7 +125,7 @@ class GuiAbout(NDialog):
def closeEvent(self, event: QCloseEvent) -> None:
"""Capture the close event and perform cleanup."""
event.accept()
self.deleteLater()
self.softDelete()
return
##
+1 -1
View File
@@ -137,7 +137,7 @@ class GuiDocMerge(NDialog):
cls.exec()
data = cls.data()
accepted = cls.result() == QtAccepted
cls.deleteLater()
cls.softDelete()
return data, accepted
##
+1 -1
View File
@@ -185,7 +185,7 @@ class GuiDocSplit(NDialog):
cls.exec()
data, text = cls.data()
accepted = cls.result() == QtAccepted
cls.deleteLater()
cls.softDelete()
return data, text, accepted
##
+1 -1
View File
@@ -90,5 +90,5 @@ class GuiEditLabel(NDialog):
cls.exec()
label = cls.itemLabel
accepted = cls.result() == QtAccepted
cls.deleteLater()
cls.softDelete()
return label, accepted
+1 -1
View File
@@ -771,7 +771,7 @@ class GuiPreferences(NDialog):
event.accept()
QApplication.processEvents()
self.done(nwConst.DLG_FINISHED)
self.deleteLater()
self.softDelete()
return
##
+1 -1
View File
@@ -147,7 +147,7 @@ class GuiProjectSettings(NDialog):
"""Capture the user closing the window and save settings."""
self._saveSettings()
event.accept()
self.deleteLater()
self.softDelete()
return
##
+1 -1
View File
@@ -131,7 +131,7 @@ class GuiQuoteSelect(NDialog):
cls.exec()
quote = cls._selected
accepted = cls.result() == QtAccepted
cls.deleteLater()
cls.softDelete()
return quote, accepted
##
+1 -1
View File
@@ -140,7 +140,7 @@ class GuiWordList(NDialog):
"""Capture the close event and perform cleanup."""
self._saveGuiSettings()
event.accept()
self.deleteLater()
self.softDelete()
return
##
+9
View File
@@ -45,6 +45,15 @@ if TYPE_CHECKING: # pragma: no cover
class NDialog(QDialog):
def softDelete(self) -> None:
"""Since calling deleteLater is sometimes not safe from Python,
as the C++ object can be deleted before the Python process is
done with the object, we instead set the dialog's parent to None
so that it gets garbage collected when it runs out of scope.
"""
self.setParent(None) # type: ignore
return
def keyPressEvent(self, event: QKeyEvent) -> None:
"""Overload keyPressEvent and forward escape to close."""
if event.matches(QKeySequence.StandardKey.Cancel):
+1 -1
View File
@@ -172,7 +172,7 @@ class GuiDictionaries(NNonBlockingDialog):
def closeEvent(self, event: QCloseEvent) -> None:
"""Capture the user closing the window."""
event.accept()
self.deleteLater()
self.softDelete()
return
##
+1 -1
View File
@@ -133,7 +133,7 @@ class GuiLipsum(NDialog):
cls = GuiLipsum(parent)
cls.exec()
text = cls.lipsumText
cls.deleteLater()
cls.softDelete()
return text
##
+1 -1
View File
@@ -250,7 +250,7 @@ class GuiManuscriptBuild(NDialog):
"""
self._saveSettings()
event.accept()
self.deleteLater()
self.softDelete()
return
##
+1 -1
View File
@@ -265,7 +265,7 @@ class GuiManuscript(NToolDialog):
if isinstance(obj, GuiBuildSettings) and obj.isVisible():
obj.close()
event.accept()
self.deleteLater()
self.softDelete()
return
##
+1 -1
View File
@@ -200,7 +200,7 @@ class GuiBuildSettings(NToolDialog):
self._askToSaveBuild()
self._saveSettings()
event.accept()
self.deleteLater()
self.softDelete()
return
##
+1 -1
View File
@@ -150,7 +150,7 @@ class GuiNovelDetails(NNonBlockingDialog):
"""Capture the user closing the window and save settings."""
self._saveSettings()
event.accept()
self.deleteLater()
self.softDelete()
return
##
+1 -1
View File
@@ -196,7 +196,7 @@ class GuiWelcome(NDialog):
"""Capture the user closing the window and save settings."""
self._saveSettings()
event.accept()
self.deleteLater()
self.softDelete()
return
##
+1 -1
View File
@@ -318,7 +318,7 @@ class GuiWritingStats(NToolDialog):
def closeEvent(self, event: QCloseEvent) -> None:
"""Capture the user closing the window."""
event.accept()
self.deleteLater()
self.softDelete()
return
##
+2 -2
View File
@@ -529,7 +529,7 @@ def testGuiProjTree_MergeDocuments(qtbot, monkeypatch, nwGUI, projPath, mockRnd,
monkeypatch.setattr(GuiDocMerge, "__init__", lambda *a: None)
monkeypatch.setattr(GuiDocMerge, "exec", lambda *a: None)
monkeypatch.setattr(GuiDocMerge, "deleteLater", lambda *a: None)
monkeypatch.setattr(GuiDocMerge, "softDelete", lambda *a: None)
monkeypatch.setattr(GuiDocMerge, "result", lambda *a: QtAccepted)
monkeypatch.setattr(GuiDocMerge, "data", lambda *a: mergeData)
@@ -629,7 +629,7 @@ def testGuiProjTree_SplitDocument(qtbot, monkeypatch, nwGUI, projPath, mockRnd,
monkeypatch.setattr(GuiDocSplit, "__init__", lambda *a: None)
monkeypatch.setattr(GuiDocSplit, "exec", lambda *a: None)
monkeypatch.setattr(GuiDocSplit, "deleteLater", lambda *a: None)
monkeypatch.setattr(GuiDocSplit, "softDelete", lambda *a: None)
monkeypatch.setattr(GuiDocSplit, "result", lambda *a: QtAccepted)
monkeypatch.setattr(GuiDocSplit, "data", lambda *a: (splitData, splitText))