diff options
author | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2017-10-10 10:56:42 +0300 |
---|---|---|
committer | Miikka Heikkinen <miikka.heikkinen@qt.io> | 2017-10-11 06:49:42 +0000 |
commit | a821037b21579235fd8121e8dd971ae379a7b1bc (patch) | |
tree | a9290933480e2875b8e8af5769bb71dc8b80fb96 /src/Authoring/Studio/Palettes/BasicObjects | |
parent | 1922e89226d35ecc2abc1e979ea819342723c6f9 (diff) |
Fix dragging basic objects and project view items
Mouse areas in these views didn't get release events once drag
was finished, causing wrong items to be dragged on subsequent drags.
Force the release after drag is over to fix the issue.
Task-number: BOUL-900
Change-Id: Iefd6897d24f8769ceb19679531472f6934cb1fb9
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Marianne Yrjänä <marianne.yrjana@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/Studio/Palettes/BasicObjects')
3 files changed, 6 insertions, 4 deletions
diff --git a/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.cpp b/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.cpp index 6834352a..151b3e8f 100644 --- a/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.cpp +++ b/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.cpp @@ -38,6 +38,7 @@ #include <QtGui/qdrag.h> #include <QtQml/qqmlcontext.h> #include <QtQml/qqmlengine.h> +#include <QtQuick/qquickitem.h> BasicObjectsView::BasicObjectsView(QWidget *parent) : QQuickWidget(parent) , m_ObjectsModel(new BasicObjectsModel(this)) @@ -52,7 +53,7 @@ QSize BasicObjectsView::sizeHint() const return {120, 600}; } -void BasicObjectsView::startDrag(int row) +void BasicObjectsView::startDrag(QQuickItem *item, int row) { const auto index = m_ObjectsModel->index(row); @@ -60,6 +61,7 @@ void BasicObjectsView::startDrag(int row) drag.setMimeData(m_ObjectsModel->mimeData({index})); drag.setPixmap(QPixmap(index.data(BasicObjectsModel::IconRole).toUrl().toLocalFile())); drag.exec(Qt::CopyAction); + QTimer::singleShot(0, item, &QQuickItem::ungrabMouse); } void BasicObjectsView::initialize() diff --git a/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.h b/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.h index 9317fc8f..86549cb0 100644 --- a/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.h +++ b/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.h @@ -32,6 +32,7 @@ #include <QQuickWidget> class BasicObjectsModel; +QT_FORWARD_DECLARE_CLASS(QQuickItem) class BasicObjectsView : public QQuickWidget { @@ -41,7 +42,7 @@ public: QSize sizeHint() const override; - Q_INVOKABLE void startDrag(int row); + Q_INVOKABLE void startDrag(QQuickItem *item, int row); private: void initialize(); diff --git a/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.qml b/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.qml index ec2a0f6e..6fa1fb76 100644 --- a/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.qml +++ b/src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.qml @@ -61,12 +61,11 @@ Rectangle { MouseArea { id: dragArea - property bool dragging: false anchors.fill: parent drag.target: dragItem } - Drag.onDragStarted: _basicObjectsView.startDrag(model.index) + Drag.onDragStarted: _basicObjectsView.startDrag(dragArea, model.index) } Row { id: contentRow |