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: def closeEvent(self, event: QCloseEvent) -> None:
"""Capture the close event and perform cleanup.""" """Capture the close event and perform cleanup."""
event.accept() event.accept()
self.deleteLater() self.softDelete()
return return
## ##
+1 -1
View File
@@ -137,7 +137,7 @@ class GuiDocMerge(NDialog):
cls.exec() cls.exec()
data = cls.data() data = cls.data()
accepted = cls.result() == QtAccepted accepted = cls.result() == QtAccepted
cls.deleteLater() cls.softDelete()
return data, accepted return data, accepted
## ##
+1 -1
View File
@@ -185,7 +185,7 @@ class GuiDocSplit(NDialog):
cls.exec() cls.exec()
data, text = cls.data() data, text = cls.data()
accepted = cls.result() == QtAccepted accepted = cls.result() == QtAccepted
cls.deleteLater() cls.softDelete()
return data, text, accepted return data, text, accepted
## ##
+1 -1
View File
@@ -90,5 +90,5 @@ class GuiEditLabel(NDialog):
cls.exec() cls.exec()
label = cls.itemLabel label = cls.itemLabel
accepted = cls.result() == QtAccepted accepted = cls.result() == QtAccepted
cls.deleteLater() cls.softDelete()
return label, accepted return label, accepted
+1 -1
View File
@@ -771,7 +771,7 @@ class GuiPreferences(NDialog):
event.accept() event.accept()
QApplication.processEvents() QApplication.processEvents()
self.done(nwConst.DLG_FINISHED) self.done(nwConst.DLG_FINISHED)
self.deleteLater() self.softDelete()
return return
## ##
+1 -1
View File
@@ -147,7 +147,7 @@ class GuiProjectSettings(NDialog):
"""Capture the user closing the window and save settings.""" """Capture the user closing the window and save settings."""
self._saveSettings() self._saveSettings()
event.accept() event.accept()
self.deleteLater() self.softDelete()
return return
## ##
+1 -1
View File
@@ -131,7 +131,7 @@ class GuiQuoteSelect(NDialog):
cls.exec() cls.exec()
quote = cls._selected quote = cls._selected
accepted = cls.result() == QtAccepted accepted = cls.result() == QtAccepted
cls.deleteLater() cls.softDelete()
return quote, accepted return quote, accepted
## ##
+1 -1
View File
@@ -140,7 +140,7 @@ class GuiWordList(NDialog):
"""Capture the close event and perform cleanup.""" """Capture the close event and perform cleanup."""
self._saveGuiSettings() self._saveGuiSettings()
event.accept() event.accept()
self.deleteLater() self.softDelete()
return return
## ##
+9
View File
@@ -45,6 +45,15 @@ if TYPE_CHECKING: # pragma: no cover
class NDialog(QDialog): 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: def keyPressEvent(self, event: QKeyEvent) -> None:
"""Overload keyPressEvent and forward escape to close.""" """Overload keyPressEvent and forward escape to close."""
if event.matches(QKeySequence.StandardKey.Cancel): if event.matches(QKeySequence.StandardKey.Cancel):
+1 -1
View File
@@ -172,7 +172,7 @@ class GuiDictionaries(NNonBlockingDialog):
def closeEvent(self, event: QCloseEvent) -> None: def closeEvent(self, event: QCloseEvent) -> None:
"""Capture the user closing the window.""" """Capture the user closing the window."""
event.accept() event.accept()
self.deleteLater() self.softDelete()
return return
## ##
+1 -1
View File
@@ -133,7 +133,7 @@ class GuiLipsum(NDialog):
cls = GuiLipsum(parent) cls = GuiLipsum(parent)
cls.exec() cls.exec()
text = cls.lipsumText text = cls.lipsumText
cls.deleteLater() cls.softDelete()
return text return text
## ##
+1 -1
View File
@@ -250,7 +250,7 @@ class GuiManuscriptBuild(NDialog):
""" """
self._saveSettings() self._saveSettings()
event.accept() event.accept()
self.deleteLater() self.softDelete()
return return
## ##
+1 -1
View File
@@ -265,7 +265,7 @@ class GuiManuscript(NToolDialog):
if isinstance(obj, GuiBuildSettings) and obj.isVisible(): if isinstance(obj, GuiBuildSettings) and obj.isVisible():
obj.close() obj.close()
event.accept() event.accept()
self.deleteLater() self.softDelete()
return return
## ##
+1 -1
View File
@@ -200,7 +200,7 @@ class GuiBuildSettings(NToolDialog):
self._askToSaveBuild() self._askToSaveBuild()
self._saveSettings() self._saveSettings()
event.accept() event.accept()
self.deleteLater() self.softDelete()
return return
## ##
+1 -1
View File
@@ -150,7 +150,7 @@ class GuiNovelDetails(NNonBlockingDialog):
"""Capture the user closing the window and save settings.""" """Capture the user closing the window and save settings."""
self._saveSettings() self._saveSettings()
event.accept() event.accept()
self.deleteLater() self.softDelete()
return return
## ##
+1 -1
View File
@@ -196,7 +196,7 @@ class GuiWelcome(NDialog):
"""Capture the user closing the window and save settings.""" """Capture the user closing the window and save settings."""
self._saveSettings() self._saveSettings()
event.accept() event.accept()
self.deleteLater() self.softDelete()
return return
## ##
+1 -1
View File
@@ -318,7 +318,7 @@ class GuiWritingStats(NToolDialog):
def closeEvent(self, event: QCloseEvent) -> None: def closeEvent(self, event: QCloseEvent) -> None:
"""Capture the user closing the window.""" """Capture the user closing the window."""
event.accept() event.accept()
self.deleteLater() self.softDelete()
return 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, "__init__", lambda *a: None)
monkeypatch.setattr(GuiDocMerge, "exec", 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, "result", lambda *a: QtAccepted)
monkeypatch.setattr(GuiDocMerge, "data", lambda *a: mergeData) 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, "__init__", lambda *a: None)
monkeypatch.setattr(GuiDocSplit, "exec", 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, "result", lambda *a: QtAccepted)
monkeypatch.setattr(GuiDocSplit, "data", lambda *a: (splitData, splitText)) monkeypatch.setattr(GuiDocSplit, "data", lambda *a: (splitData, splitText))