mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
Simplify implementation of mouse long-press detection
Now uses the same method as for touch long-press detection.
This commit is contained in:
parent
0f50abe12d
commit
6b0dcb62da
|
@ -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:
|
||||
|
|
|
@ -363,7 +363,6 @@ private:
|
|||
QPointF m_pressedMousePos;
|
||||
|
||||
QTimer* m_autoActivationTimer;
|
||||
QTimer* m_longPressDetectionTimer;
|
||||
|
||||
Qt::GestureType m_swipeGesture;
|
||||
Qt::GestureType m_twoFingerTapGesture;
|
||||
|
|
Loading…
Reference in a new issue