]> cloud.milkyroute.net Git - dolphin.git/commitdiff
kitemlistcontroller: process forward/back buttons when double-clicking
authorWolfgang Müller <wolf@oriole.systems>
Mon, 14 Oct 2024 16:43:28 +0000 (18:43 +0200)
committerMéven Car <meven@kde.org>
Thu, 17 Oct 2024 14:07:49 +0000 (14:07 +0000)
Tapping the forward or back mouse buttons quickly enough makes Dolphin
interpret the action as a double-click of the button in question and
handle it in mouseDoubleClickEvent() instead of its normal button
handler. This means that certain button presses might seem delayed or
"swallowed" when quickly navigating forwards or backwards through the
history.

Since a double-click of the forward or back button is currently
meaningless, fix this by emitting a normal mouseButtonPressed event for
those buttons in the double-click handler and skipping any further event
processing.

Co-authored-by: Felix Ernst <felixernst@zohomail.eu>
CCBUG: 485295

src/kitemviews/kitemlistcontroller.cpp

index 997e6623bbbb9847aa8e45ae1e683c6aeba33fd4..821e1b75fea1ff100bd96d22a81c58092a44d29e 100644 (file)
@@ -700,6 +700,15 @@ bool KItemListController::mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event,
     const QPointF pos = transform.map(event->pos());
     const std::optional<int> index = m_view->itemAt(pos);
 
+    if (event->button() & (Qt::ForwardButton | Qt::BackButton)) {
+        // "Forward" and "Back" are reserved for quickly navigating through the
+        // history. Double-clicking those buttons should be interpreted as two
+        // separate button presses. We arrive here for the second click, which
+        // we now react to just as we would for a singular click
+        Q_EMIT mouseButtonPressed(index.value_or(-1), event->button());
+        return false;
+    }
+
     if (!index.has_value()) {
         Q_EMIT doubleClickViewBackground(event->button());
         return false;