Check touch device type on TouchEvents
authorromibi <romibi@bluewin.ch>
Sun, 3 Jul 2016 13:36:19 +0000 (15:36 +0200)
committerDaniel Albers <daniel@lbe.rs>
Sun, 3 Jul 2016 18:44:30 +0000 (20:44 +0200)
Check the touch device type to prevent touch pads from being handled as touch
screens.

No check required on TouchUpdate and TouchEnd, because if TouchBegin is not
accepted (return true) no following TouchUpdate/End Events are received.

src/qtui/chatview.cpp
src/uisupport/treeviewtouch.cpp

index 7da0847..cb9d740 100644 (file)
@@ -109,7 +109,11 @@ bool ChatView::event(QEvent *event)
         }
     }
 
         }
     }
 
-    if (event->type() == QEvent::TouchBegin) {
+#if QT_VERSION >= 0x050000
+    if (event->type() == QEvent::TouchBegin && ((QTouchEvent*)event)->device()->type()==QTouchDevice::TouchScreen) {
+#else
+    if (event->type() == QEvent::TouchBegin && ((QTouchEvent*)event)->deviceType()==QTouchEvent::TouchScreen) {
+#endif
         // Enable scrolling by draging, disable selecting/clicking content
         setDragMode(QGraphicsView::ScrollHandDrag);
         setInteractive(false);
         // Enable scrolling by draging, disable selecting/clicking content
         setDragMode(QGraphicsView::ScrollHandDrag);
         setInteractive(false);
@@ -145,8 +149,11 @@ bool ChatView::event(QEvent *event)
         }
         // Applying the movement happens automatically by the drag-mode
     }
         }
         // Applying the movement happens automatically by the drag-mode
     }
-
-    if (event->type() == QEvent::Wheel || event->type() == QEvent::TouchBegin || event->type() == QEvent::TouchUpdate) {
+#if QT_VERSION >= 0x050000
+    if (event->type() == QEvent::Wheel || (event->type() == QEvent::TouchBegin && ((QTouchEvent*)event)->device()->type()==QTouchDevice::TouchScreen) || event->type() == QEvent::TouchUpdate) {
+#else
+    if (event->type() == QEvent::Wheel || (event->type() == QEvent::TouchBegin && ((QTouchEvent*)event)->deviceType()==QTouchEvent::TouchScreen) || event->type() == QEvent::TouchUpdate) {
+#endif
         if (!verticalScrollBar()->isVisible()) {
             scene()->requestBacklog();
             return true;
         if (!verticalScrollBar()->isVisible()) {
             scene()->requestBacklog();
             return true;
index 0ef3b36..96845ac 100644 (file)
@@ -33,7 +33,11 @@ TreeViewTouch::TreeViewTouch(QWidget *parent)
 
 
 bool TreeViewTouch::event(QEvent *event) {
 
 
 bool TreeViewTouch::event(QEvent *event) {
-    if (event->type() == QEvent::TouchBegin) {
+#if QT_VERSION >= 0x050000
+    if (event->type() == QEvent::TouchBegin && ((QTouchEvent*)event)->device()->type()==QTouchDevice::TouchScreen) {
+#else
+    if (event->type() == QEvent::TouchBegin && ((QTouchEvent*)event)->deviceType()==QTouchEvent::TouchScreen) {
+#endif
         // Register that we may be scrolling, set the scroll mode to scroll-per-pixel
         // and accept the event (return true) so that we will receive TouchUpdate and TouchEnd/TouchCancel
         _touchScrollInProgress = true;
         // Register that we may be scrolling, set the scroll mode to scroll-per-pixel
         // and accept the event (return true) so that we will receive TouchUpdate and TouchEnd/TouchCancel
         _touchScrollInProgress = true;