summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes/BasicObjects
diff options
context:
space:
mode:
authorMiikka Heikkinen <miikka.heikkinen@qt.io>2017-10-10 10:56:42 +0300
committerMiikka Heikkinen <miikka.heikkinen@qt.io>2017-10-11 06:49:42 +0000
commita821037b21579235fd8121e8dd971ae379a7b1bc (patch)
treea9290933480e2875b8e8af5769bb71dc8b80fb96 /src/Authoring/Studio/Palettes/BasicObjects
parent1922e89226d35ecc2abc1e979ea819342723c6f9 (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')
-rw-r--r--src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.cpp4
-rw-r--r--src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.h3
-rw-r--r--src/Authoring/Studio/Palettes/BasicObjects/BasicObjectsView.qml3
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