]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistcontroller.cpp
Fix build failure after last commit
[dolphin.git] / src / kitemviews / kitemlistcontroller.cpp
index 1733eeab5fb3b50a405ded9a4f24b6550288e1d0..b7d1da7d259610d75066492e1bd77320664b3b37 100644 (file)
@@ -26,6 +26,7 @@
 #include <QGraphicsView>
 #include <QMimeData>
 #include <QTimer>
+#include <QTouchEvent>
 
 KItemListController::KItemListController(KItemModelBase* model, KItemListView* view, QObject* parent) :
     QObject(parent),
@@ -37,6 +38,7 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* v
     m_scrollerIsScrolling(false),
     m_pinchGestureInProgress(false),
     m_mousePress(false),
+    m_isTouchEvent(false),
     m_selectionBehavior(NoSelection),
     m_autoActivationBehavior(ActivationAndExpansion),
     m_mouseDoubleClickAction(ActivateItemOnly),
@@ -49,7 +51,6 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* v
     m_autoActivationTimer(nullptr),
     m_swipeGesture(Qt::CustomGesture),
     m_twoFingerTapGesture(Qt::CustomGesture),
-    m_lastSource(Qt::MouseEventNotSynthesized),
     m_oldSelection(),
     m_keyboardAnchorIndex(-1),
     m_keyboardAnchorPos(0)
@@ -537,9 +538,8 @@ bool KItemListController::inputMethodEvent(QInputMethodEvent* event)
 bool KItemListController::mousePressEvent(QGraphicsSceneMouseEvent* event, const QTransform& transform)
 {
     m_mousePress = true;
-    m_lastSource = event->source();
 
-    if (event->source() == Qt::MouseEventSynthesizedByQt) {
+    if (event->source() == Qt::MouseEventSynthesizedByQt && m_isTouchEvent) {
         return false;
     }
 
@@ -576,7 +576,7 @@ bool KItemListController::mouseMoveEvent(QGraphicsSceneMouseEvent* event, const
         m_view->m_tapAndHoldIndicator->setActive(false);
     }
 
-    if (event->source() == Qt::MouseEventSynthesizedByQt && !m_dragActionOrRightClick) {
+    if (event->source() == Qt::MouseEventSynthesizedByQt && !m_dragActionOrRightClick && m_isTouchEvent) {
         return false;
     }
 
@@ -633,6 +633,7 @@ bool KItemListController::mouseMoveEvent(QGraphicsSceneMouseEvent* event, const
 bool KItemListController::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, const QTransform& transform)
 {
     m_mousePress = false;
+    m_isTouchEvent = false;
 
     if (!m_view) {
         return false;
@@ -643,7 +644,7 @@ bool KItemListController::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, con
     }
 
     KItemListRubberBand* rubberBand = m_view->rubberBand();
-    if (event->source() == Qt::MouseEventSynthesizedByQt && !rubberBand->isActive()) {
+    if (event->source() == Qt::MouseEventSynthesizedByQt && !rubberBand->isActive() && m_isTouchEvent) {
         return false;
     }
 
@@ -863,6 +864,7 @@ bool KItemListController::hoverLeaveEvent(QGraphicsSceneHoverEvent* event, const
     Q_UNUSED(transform)
 
     m_mousePress = false;
+    m_isTouchEvent = false;
 
     if (!m_model || !m_view) {
         return false;
@@ -935,6 +937,15 @@ bool KItemListController::gestureEvent(QGestureEvent* event, const QTransform& t
     return accepted;
 }
 
+bool KItemListController::touchBeginEvent(QTouchEvent* event, const QTransform& transform)
+{
+    Q_UNUSED(event)
+    Q_UNUSED(transform)
+
+    m_isTouchEvent = true;
+    return false;
+}
+
 void KItemListController::tapTriggered(QTapGesture* tap, const QTransform& transform)
 {
     static bool scrollerWasActive = false;
@@ -943,7 +954,6 @@ void KItemListController::tapTriggered(QTapGesture* tap, const QTransform& trans
         m_dragActionOrRightClick = false;
         m_isSwipeGesture = false;
         m_pinchGestureInProgress = false;
-        m_lastSource = Qt::MouseEventSynthesizedByQt;
         scrollerWasActive = m_scrollerIsScrolling;
     }
 
@@ -972,6 +982,7 @@ void KItemListController::tapTriggered(QTapGesture* tap, const QTransform& trans
             onPress(tap->hotSpot().toPoint(), tap->position().toPoint(), Qt::NoModifier, Qt::LeftButton);
             onRelease(transform.map(tap->position()), Qt::NoModifier, Qt::LeftButton, true);
         }
+        m_isTouchEvent = false;
     }
 }
 
@@ -979,7 +990,7 @@ void KItemListController::tapAndHoldTriggered(QGestureEvent* event, const QTrans
 {
 
     //the Qt TabAndHold gesture is triggerable with a mouse click, we don't want this
-    if (m_lastSource == Qt::MouseEventNotSynthesized) {
+    if (!m_isTouchEvent) {
         return;
     }
 
@@ -1126,6 +1137,8 @@ bool KItemListController::processEvent(QEvent* event, const QTransform& transfor
         return resizeEvent(static_cast<QGraphicsSceneResizeEvent*>(event), transform);
     case QEvent::Gesture:
         return gestureEvent(static_cast<QGestureEvent*>(event), transform);
+    case QEvent::TouchBegin:
+        return touchBeginEvent(static_cast<QTouchEvent*>(event), transform);
     default:
         break;
     }