Skip to content
Permalink
Browse files

[processing] Fix crashes and random behavior after dropping algorithms

to model designer

Also fixes drag and drop within the algorithm parameter dialog and
the qt warnings thrown during these operations

(cherry picked from commit 30f786c)
  • Loading branch information
nyalldawson committed Mar 4, 2019
1 parent 3121761 commit e6b9a892d2ede2e0746d4552907252c8261221ce
Showing with 16 additions and 8 deletions.
  1. +16 −8 python/plugins/processing/modeler/ModelerDialog.py
@@ -46,7 +46,8 @@
pyqtSignal,
QDataStream,
QIODevice,
QUrl)
QUrl,
QTimer)
from qgis.PyQt.QtWidgets import (QGraphicsView,
QTreeWidget,
QMessageBox,
@@ -312,19 +313,26 @@ def _dragEnterEvent(event):
event.ignore()

def _dropEvent(event):
if event.mimeData().hasFormat('application/x-vnd.qgis.qgis.algorithmid'):
data = event.mimeData().data('application/x-vnd.qgis.qgis.algorithmid')
stream = QDataStream(data, QIODevice.ReadOnly)
algorithm_id = stream.readQString()
def alg_dropped(algorithm_id, pos):
alg = QgsApplication.processingRegistry().createAlgorithmById(algorithm_id)
if alg is not None:
self._addAlgorithm(alg, event.pos())
self._addAlgorithm(alg, pos)
else:
assert False, algorithm_id

def input_dropped(id, pos):
if id in [param.id() for param in QgsApplication.instance().processingRegistry().parameterTypes()]:
self.addInputOfType(itemId, pos)

if event.mimeData().hasFormat('application/x-vnd.qgis.qgis.algorithmid'):
data = event.mimeData().data('application/x-vnd.qgis.qgis.algorithmid')
stream = QDataStream(data, QIODevice.ReadOnly)
algorithm_id = stream.readQString()
QTimer.singleShot(0, lambda id=algorithm_id, pos=event.pos(): alg_dropped(id, pos))
event.accept()
elif event.mimeData().hasText():
itemId = event.mimeData().text()
if itemId in [param.id() for param in QgsApplication.instance().processingRegistry().parameterTypes()]:
self.addInputOfType(itemId, event.pos())
QTimer.singleShot(0, lambda id=itemId, pos=event.pos(): input_dropped(id, pos))
event.accept()
else:
event.ignore()

0 comments on commit e6b9a89

Please sign in to comment.
You can’t perform that action at this time.