Skip to content

Commit 5e4ee5c

Browse files
committed
[processing] Correctly set parent widgets for algorithm dialogs
to avoid dialogs immediately going out of scope and being garbage collected (cherry picked from commit 07dc782)
1 parent 751b2c4 commit 5e4ee5c

File tree

6 files changed

+12
-11
lines changed

6 files changed

+12
-11
lines changed

python/plugins/processing/ProcessingPlugin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
from qgis.PyQt.QtCore import Qt, QCoreApplication, QDir, QFileInfo
4444
from qgis.PyQt.QtWidgets import QMenu, QAction
4545
from qgis.PyQt.QtGui import QIcon, QKeySequence
46+
from qgis.utils import iface
4647

4748
from processing.core.Processing import Processing
4849
from processing.gui.AlgorithmDialog import AlgorithmDialog
@@ -86,7 +87,7 @@ def runAlg(file):
8687
return False
8788

8889
alg.setProvider(QgsApplication.processingRegistry().providerById('model'))
89-
dlg = AlgorithmDialog(alg)
90+
dlg = AlgorithmDialog(alg, parent=iface.mainWindow())
9091
dlg.show()
9192
return True
9293

python/plugins/processing/gui/AlgorithmLocatorFilter.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,9 @@ def triggerResult(self, result):
9595
dlg.setMessage(message)
9696
dlg.exec_()
9797
return
98-
dlg = alg.createCustomParametersWidget(None)
98+
dlg = alg.createCustomParametersWidget(parent=iface.mainWindow())
9999
if not dlg:
100-
dlg = AlgorithmDialog(alg)
100+
dlg = AlgorithmDialog(alg, parent=iface.mainWindow())
101101
canvas = iface.mapCanvas()
102102
prevMapTool = canvas.mapTool()
103103
dlg.show()
@@ -173,9 +173,9 @@ def triggerResult(self, result):
173173

174174
if [d for d in alg.parameterDefinitions() if
175175
d.name() not in ('INPUT', 'OUTPUT')]:
176-
dlg = alg.createCustomParametersWidget(None)
176+
dlg = alg.createCustomParametersWidget(parent=iface.mainWindow())
177177
if not dlg:
178-
dlg = AlgorithmDialog(alg, True)
178+
dlg = AlgorithmDialog(alg, True, parent=iface.mainWindow())
179179
canvas = iface.mapCanvas()
180180
prevMapTool = canvas.mapTool()
181181
dlg.show()

python/plugins/processing/gui/menus.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -250,9 +250,9 @@ def _executeAlgorithm(alg_id):
250250
return
251251

252252
if (alg.countVisibleParameters()) > 0:
253-
dlg = alg.createCustomParametersWidget(None)
253+
dlg = alg.createCustomParametersWidget(parent=iface.mainWindow())
254254
if not dlg:
255-
dlg = AlgorithmDialog(alg)
255+
dlg = AlgorithmDialog(alg, parent=iface.mainWindow())
256256
canvas = iface.mapCanvas()
257257
prevMapTool = canvas.mapTool()
258258
dlg.show()

python/plugins/processing/modeler/ModelerDialog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ def runModel(self):
487487
self.bar.pushMessage("", self.tr("Model doesn't contain any algorithm and/or parameter and can't be executed"), level=Qgis.Warning, duration=5)
488488
return
489489

490-
dlg = AlgorithmDialog(self.model)
490+
dlg = AlgorithmDialog(self.model, parent=iface.mainWindow())
491491
dlg.exec_()
492492

493493
def save(self):

python/plugins/processing/script/ScriptEditorDialog.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -248,9 +248,9 @@ def runAlgorithm(self):
248248
alg.setProvider(QgsApplication.processingRegistry().providerById("script"))
249249
alg.initAlgorithm()
250250

251-
dlg = alg.createCustomParametersWidget(self)
251+
dlg = alg.createCustomParametersWidget(iface.mainWindow())
252252
if not dlg:
253-
dlg = AlgorithmDialog(alg)
253+
dlg = AlgorithmDialog(alg, parent=iface.mainWindow())
254254

255255
canvas = iface.mapCanvas()
256256
prevMapTool = canvas.mapTool()

python/plugins/processing/tools/general.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ def createAlgorithmDialog(algOrName, parameters={}):
137137
dlg = alg.createCustomParametersWidget(iface.mainWindow())
138138

139139
if not dlg:
140-
dlg = AlgorithmDialog(alg)
140+
dlg = AlgorithmDialog(alg, parent=iface.mainWindow())
141141

142142
dlg.setParameters(parameters)
143143

0 commit comments

Comments
 (0)