No double click event in QML_TRANSLATE_TOUCH_TO_MOUSE mode
authorMartin Jones <martin.jones@nokia.com>
Thu, 1 Mar 2012 00:40:22 +0000 (10:40 +1000)
committerQt by Nokia <qt-info@nokia.com>
Thu, 1 Mar 2012 09:09:50 +0000 (10:09 +0100)
Since double clicks are delivered before the click, the initial
grab may not have been established.

Change-Id: Id9282489f0551d421da800294e88ead0915482cc
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
src/quick/items/qquickcanvas.cpp

index e6a3e87..670baa8 100644 (file)
@@ -378,10 +378,17 @@ void QQuickCanvasPrivate::translateTouchToMouse(QTouchEvent *event)
                 QQuickMouseEventEx me = touchToMouseEvent(QEvent::MouseButtonDblClick, p);
                 me.setTimestamp(event->timestamp());
                 me.setAccepted(false);
-                deliverMouseEvent(&me);
-                if (me.isAccepted()) {
-                    touchMouseId = p.id();
-                    event->setAccepted(true);
+                if (!mouseGrabberItem) {
+                    if (deliverInitialMousePressEvent(rootItem, &me)) {
+                        touchMouseId = p.id();
+                        event->setAccepted(true);
+                    }
+                } else {
+                    deliverMouseEvent(&me);
+                    if (me.isAccepted()) {
+                        touchMouseId = p.id();
+                        event->setAccepted(true);
+                    }
                 }
             }
             QQuickMouseEventEx me = touchToMouseEvent(QEvent::MouseButtonPress, p);
@@ -391,8 +398,9 @@ void QQuickCanvasPrivate::translateTouchToMouse(QTouchEvent *event)
             if (me.isAccepted()) {
                 touchMouseId = p.id();
                 event->setAccepted(true);
-                break;
             }
+            if (touchMouseId != -1)
+                break;
         } else if (p.id() == touchMouseId) {
             if (p.state() & Qt::TouchPointMoved) {
                 QQuickMouseEventEx me = touchToMouseEvent(QEvent::MouseMove, p);