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 5, 2019
1 parent a697c99 commit ad3ba9786194fe4e5c0dbefc3ea7a64430fe1392
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,
@@ -321,19 +322,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 ad3ba97

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