Check touch device type on TouchEvents
authorromibi <romibi@bluewin.ch>
Sun, 3 Jul 2016 13:36:19 +0000 (15:36 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 28 Feb 2018 22:07:21 +0000 (23:07 +0100)
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.

(cherry picked from commit 127226e3619358013ef821acdf9e80f615370b12)

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

index 90e83df..aa507e8 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);
@@ -145,8 +149,11 @@ bool ChatView::event(QEvent *event)
         }
         // 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;
index 0ef3b36..96845ac 100644 (file)
@@ -33,7 +33,11 @@ TreeViewTouch::TreeViewTouch(QWidget *parent)
 
 
 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;