Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[processing] Correctly set parent widgets for algorithm dialogs
to avoid dialogs immediately going out of scope and being garbage
collected
  • Loading branch information
nyalldawson committed Nov 23, 2018
1 parent 2617fd5 commit 0e928e8
Show file tree
Hide file tree
Showing 6 changed files with 12 additions and 11 deletions.
3 changes: 2 additions & 1 deletion python/plugins/processing/ProcessingPlugin.py
Expand Up @@ -43,6 +43,7 @@
from qgis.PyQt.QtCore import Qt, QCoreApplication, QDir, QFileInfo
from qgis.PyQt.QtWidgets import QMenu, QAction
from qgis.PyQt.QtGui import QIcon, QKeySequence
from qgis.utils import iface

from processing.core.Processing import Processing
from processing.gui.AlgorithmDialog import AlgorithmDialog
Expand Down Expand Up @@ -86,7 +87,7 @@ def runAlg(file):
return False

alg.setProvider(QgsApplication.processingRegistry().providerById('model'))
dlg = AlgorithmDialog(alg)
dlg = AlgorithmDialog(alg, parent=iface.mainWindow())
dlg.show()
return True

Expand Down
8 changes: 4 additions & 4 deletions python/plugins/processing/gui/AlgorithmLocatorFilter.py
Expand Up @@ -95,9 +95,9 @@ def triggerResult(self, result):
dlg.setMessage(message)
dlg.exec_()
return
dlg = alg.createCustomParametersWidget(None)
dlg = alg.createCustomParametersWidget(parent=iface.mainWindow())
if not dlg:
dlg = AlgorithmDialog(alg)
dlg = AlgorithmDialog(alg, parent=iface.mainWindow())
canvas = iface.mapCanvas()
prevMapTool = canvas.mapTool()
dlg.show()
Expand Down Expand Up @@ -173,9 +173,9 @@ def triggerResult(self, result):

if [d for d in alg.parameterDefinitions() if
d.name() not in ('INPUT', 'OUTPUT')]:
dlg = alg.createCustomParametersWidget(None)
dlg = alg.createCustomParametersWidget(parent=iface.mainWindow())
if not dlg:
dlg = AlgorithmDialog(alg, True)
dlg = AlgorithmDialog(alg, True, parent=iface.mainWindow())
canvas = iface.mapCanvas()
prevMapTool = canvas.mapTool()
dlg.show()
Expand Down
4 changes: 2 additions & 2 deletions python/plugins/processing/gui/menus.py
Expand Up @@ -250,9 +250,9 @@ def _executeAlgorithm(alg_id):
return

if (alg.countVisibleParameters()) > 0:
dlg = alg.createCustomParametersWidget(None)
dlg = alg.createCustomParametersWidget(parent=iface.mainWindow())
if not dlg:
dlg = AlgorithmDialog(alg)
dlg = AlgorithmDialog(alg, parent=iface.mainWindow())
canvas = iface.mapCanvas()
prevMapTool = canvas.mapTool()
dlg.show()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/modeler/ModelerDialog.py
Expand Up @@ -487,7 +487,7 @@ def runModel(self):
self.bar.pushMessage("", self.tr("Model doesn't contain any algorithm and/or parameter and can't be executed"), level=Qgis.Warning, duration=5)
return

dlg = AlgorithmDialog(self.model)
dlg = AlgorithmDialog(self.model, parent=iface.mainWindow())
dlg.exec_()

def save(self):
Expand Down
4 changes: 2 additions & 2 deletions python/plugins/processing/script/ScriptEditorDialog.py
Expand Up @@ -248,9 +248,9 @@ def runAlgorithm(self):
alg.setProvider(QgsApplication.processingRegistry().providerById("script"))
alg.initAlgorithm()

dlg = alg.createCustomParametersWidget(self)
dlg = alg.createCustomParametersWidget(iface.mainWindow())
if not dlg:
dlg = AlgorithmDialog(alg)
dlg = AlgorithmDialog(alg, parent=iface.mainWindow())

canvas = iface.mapCanvas()
prevMapTool = canvas.mapTool()
Expand Down
2 changes: 1 addition & 1 deletion python/plugins/processing/tools/general.py
Expand Up @@ -137,7 +137,7 @@ def createAlgorithmDialog(algOrName, parameters={}):
dlg = alg.createCustomParametersWidget(iface.mainWindow())

if not dlg:
dlg = AlgorithmDialog(alg)
dlg = AlgorithmDialog(alg, parent=iface.mainWindow())

dlg.setParameters(parameters)

Expand Down

0 comments on commit 0e928e8

Please sign in to comment.