From 127226e3619358013ef821acdf9e80f615370b12 Mon Sep 17 00:00:00 2001 From: romibi Date: Sun, 3 Jul 2016 15:36:19 +0200 Subject: [PATCH] Check touch device type on TouchEvents 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 | 13 ++++++++++--- src/uisupport/treeviewtouch.cpp | 6 +++++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/qtui/chatview.cpp b/src/qtui/chatview.cpp index 7da0847b..cb9d740e 100644 --- a/src/qtui/chatview.cpp +++ b/src/qtui/chatview.cpp @@ -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; diff --git a/src/uisupport/treeviewtouch.cpp b/src/uisupport/treeviewtouch.cpp index 0ef3b366..96845ac4 100644 --- a/src/uisupport/treeviewtouch.cpp +++ b/src/uisupport/treeviewtouch.cpp @@ -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; -- 2.20.1