]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistcontroller.cpp
Address Nate's UX feedback: Episode 2
[dolphin.git] / src / kitemviews / kitemlistcontroller.cpp
index 03ee5cfe62eed09996db3c60cbec5ceac6907655..2c407dbe2d9afb7a9afbfca05b841636116fe3d1 100644 (file)
@@ -77,7 +77,7 @@ KItemListController::KItemListController(KItemModelBase* model, KItemListView* v
     m_longPressDetectionTimer->setInterval(QGuiApplication::styleHints()->mousePressAndHoldInterval());
     connect(m_longPressDetectionTimer, &QTimer::timeout, this, [this]() {
         if (!m_selectionMode) {
-            Q_EMIT selectionModeRequested();
+            Q_EMIT selectionModeChangeRequested(true);
         }
     });
 
@@ -232,7 +232,7 @@ bool KItemListController::singleClickActivationEnforced() const
     return m_singleClickActivationEnforced;
 }
 
-void KItemListController::setSelectionMode(bool enabled)
+void KItemListController::setSelectionModeEnabled(bool enabled)
 {
     m_selectionMode = enabled;
 }
@@ -430,7 +430,9 @@ bool KItemListController::keyPressEvent(QKeyEvent* event)
     }
 
     case Qt::Key_Escape:
-        if (m_selectionBehavior != SingleSelection) {
+        if (m_selectionMode) {
+            Q_EMIT selectionModeChangeRequested(false);
+        } else if (m_selectionBehavior != SingleSelection) {
             m_selectionManager->clearSelection();
         }
         m_keyboardManager->cancelSearch();
@@ -1546,7 +1548,8 @@ bool KItemListController::onPress(const QPoint& screenPos, const QPointF& pos, c
     }
 
     const bool shiftPressed = modifiers & Qt::ShiftModifier;
-    const bool controlPressed = (modifiers & Qt::ControlModifier) || m_selectionMode;
+    const bool controlPressed = (modifiers & Qt::ControlModifier) || m_selectionMode; // Keeping selectionMode similar to pressing control will hopefully
+                                                                                      // simplify the overall logic and possibilities both for users and devs.
     const bool leftClick = buttons & Qt::LeftButton;
     const bool rightClick = buttons & Qt::RightButton;
 
@@ -1779,7 +1782,7 @@ bool KItemListController::onRelease(const QPointF& pos, const Qt::KeyboardModifi
             } else {
                 const bool singleClickActivation = m_view->style()->styleHint(QStyle::SH_ItemView_ActivateItemOnSingleClick) || m_singleClickActivationEnforced;
                 if (!singleClickActivation) {
-                    emitItemActivated = touch;
+                    emitItemActivated = touch && !m_selectionMode;
                 } else {
                     // activate on single click only if we didn't come from a rubber band release
                     emitItemActivated = !rubberBandRelease;