From b8af05e6c19d3348963e2317b6609ae6eb78fdb4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=B6rg=20Schummer?= <ext-jorg.2.schummer@nokia.com>
Date: Fri, 19 Feb 2010 14:21:36 +0200
Subject: [PATCH] QmlDesigner.ItemLibrary: fixed item dragging and selection

- itemDragged is emitted only once now after a minimal distance
  has been reached (minimal distance calculcation not exact)
- onPressed is used instead of onClicked for item selection
---
 .../components/itemlibrary/qml/ItemView.qml   | 23 +++++++++++++++----
 .../itemlibrary/qml/SectionView.qml           |  2 +-
 2 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/ItemView.qml b/src/plugins/qmldesigner/components/itemlibrary/qml/ItemView.qml
index 835ebbcb535..369de2ae630 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/qml/ItemView.qml
+++ b/src/plugins/qmldesigner/components/itemlibrary/qml/ItemView.qml
@@ -37,7 +37,7 @@ Item {
     width: GridView.view.cellWidth
     height: style.cellHeight
 
-    signal itemClicked()
+    signal itemPressed()
     signal itemDragged()
 
     Rectangle {
@@ -116,12 +116,25 @@ Item {
         id: mouseRegion
         anchors.fill: parent
 
-        onPositionChanged: {
-            itemDragged();
+        property bool reallyPressed: false
+        property int pressedX
+        property int pressedY
+
+        onPressed: {
+            reallyPressed = true
+            pressedX = mouse.x
+            pressedY = mouse.y
+            itemPressed()
         }
-        onClicked: {
-            itemClicked();
+        onPositionChanged: {
+            if (reallyPressed &&
+                (Math.abs(mouse.x - pressedX) > 2 ||
+                 Math.abs(mouse.y - pressedY) > 2)) {
+                itemDragged()
+                reallyPressed = false;
+            }
         }
+        onReleased: reallyPressed = false
     }
 }
 
diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/SectionView.qml b/src/plugins/qmldesigner/components/itemlibrary/qml/SectionView.qml
index c231730c8aa..e35d7155583 100644
--- a/src/plugins/qmldesigner/components/itemlibrary/qml/SectionView.qml
+++ b/src/plugins/qmldesigner/components/itemlibrary/qml/SectionView.qml
@@ -58,7 +58,7 @@ Column {
                 sectionView.itemSelected(itemLibId);
             }
 
-            onItemClicked: selectItem()
+            onItemPressed: selectItem()
             onItemDragged: {
                 selectItem();
                 sectionView.itemDragged(itemLibId);
-- 
GitLab