From 6b0dcb62dae13647a36ad343eee0a4ce5f48d7c8 Mon Sep 17 00:00:00 2001 From: Felix Ernst Date: Thu, 26 May 2022 12:56:03 +0200 Subject: [PATCH] Simplify implementation of mouse long-press detection Now uses the same method as for touch long-press detection. --- src/kitemviews/kitemlistcontroller.cpp | 20 +------------------- src/kitemviews/kitemlistcontroller.h | 1 - 2 files changed, 1 insertion(+), 20 deletions(-) diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 2c407dbe2d..b589ac356e 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -53,7 +53,6 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* v m_pressedIndex(std::nullopt), m_pressedMousePos(), m_autoActivationTimer(nullptr), - m_longPressDetectionTimer(nullptr), m_swipeGesture(Qt::CustomGesture), m_twoFingerTapGesture(Qt::CustomGesture), m_oldSelection(), @@ -72,15 +71,6 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* v m_autoActivationTimer->setInterval(-1); connect(m_autoActivationTimer, &QTimer::timeout, this, &KItemListController::slotAutoActivationTimeout); - m_longPressDetectionTimer = new QTimer(this); - m_longPressDetectionTimer->setSingleShot(true); - m_longPressDetectionTimer->setInterval(QGuiApplication::styleHints()->mousePressAndHoldInterval()); - connect(m_longPressDetectionTimer, &QTimer::timeout, this, [this]() { - if (!m_selectionMode) { - Q_EMIT selectionModeChangeRequested(true); - } - }); - setModel(model); setView(view); @@ -601,9 +591,6 @@ bool KItemListController::mouseMoveEvent(QGraphicsSceneMouseEvent* event, const } const QPointF pos = transform.map(event->pos()); - if ((pos - m_pressedMousePos).manhattanLength() >= QApplication::startDragDistance()) { - m_longPressDetectionTimer->stop(); - } if (m_pressedIndex.has_value() && !m_view->rubberBand()->isActive()) { // Check whether a dragging should be started @@ -667,8 +654,6 @@ bool KItemListController::mouseReleaseEvent(QGraphicsSceneMouseEvent* event, con m_view->m_tapAndHoldIndicator->setActive(false); } - m_longPressDetectionTimer->stop(); - KItemListRubberBand* rubberBand = m_view->rubberBand(); if (event->source() == Qt::MouseEventSynthesizedByQt && !rubberBand->isActive() && m_isTouchEvent) { return false; @@ -1075,6 +1060,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_isTouchEvent) { + Q_EMIT selectionModeChangeRequested(true); return; } @@ -1553,10 +1539,6 @@ bool KItemListController::onPress(const QPoint& screenPos, const QPointF& pos, c const bool leftClick = buttons & Qt::LeftButton; const bool rightClick = buttons & Qt::RightButton; - if (leftClick) { - m_longPressDetectionTimer->start(); - } - // The previous selection is cleared if either // 1. The selection mode is SingleSelection, or // 2. the selection mode is MultiSelection, and *none* of the following conditions are met: diff --git a/src/kitemviews/kitemlistcontroller.h b/src/kitemviews/kitemlistcontroller.h index 515511f863..b6a2f05fee 100644 --- a/src/kitemviews/kitemlistcontroller.h +++ b/src/kitemviews/kitemlistcontroller.h @@ -363,7 +363,6 @@ private: QPointF m_pressedMousePos; QTimer* m_autoActivationTimer; - QTimer* m_longPressDetectionTimer; Qt::GestureType m_swipeGesture; Qt::GestureType m_twoFingerTapGesture;