]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Emit "itemMiddleClicked" when Ctrl-clicking a view in single selection mode
authorKai Uwe Broulik <kde@privat.broulik.de>
Wed, 6 Jan 2021 19:16:31 +0000 (20:16 +0100)
committerKai Uwe Broulik <kde@privat.broulik.de>
Sun, 10 Jan 2021 09:50:41 +0000 (10:50 +0100)
When Ctrl can't cause a change in selection, so instead emit `itemMiddleClicked`.
This way one can Ctrl-click a Place or folder in Folders panel to open it in
a new tab, similar to what web browsers.

src/kitemviews/kitemlistcontroller.cpp

index 5c9a2bbdd35bf3acd51d683f5397db06e1c0015c..8687872ee81b6f75d22fd6577e8bfc8f8c7f3587 100644 (file)
@@ -1550,8 +1550,9 @@ bool KItemListController::onRelease(const QPointF& pos, const Qt::KeyboardModifi
         return true;
     }
 
+    const bool controlPressed = modifiers & Qt::ControlModifier;
     const bool shiftOrControlPressed = modifiers & Qt::ShiftModifier ||
-                                       modifiers & Qt::ControlModifier;
+                                       controlPressed;
 
     KItemListRubberBand* rubberBand = m_view->rubberBand();
     if (rubberBand->isActive()) {
@@ -1585,6 +1586,11 @@ bool KItemListController::onRelease(const QPointF& pos, const Qt::KeyboardModifi
             } else if (shiftOrControlPressed) {
                 // The mouse click should only update the selection, not trigger the item
                 emitItemActivated = false;
+                // When Ctrl-clicking an item when in single selection mode
+                // i.e. where Ctrl won't change the selection, pretend it was middle clicked
+                if (controlPressed && m_selectionBehavior == SingleSelection) {
+                    Q_EMIT itemMiddleClicked(index);
+                }
             } else if (!(m_view->style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick) || m_singleClickActivationEnforced)) {
                 if (touch) {
                 emitItemActivated = true;