File 2000-selection-mode.patch of Package dolphin

diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp
index 8bc066455ea1a2cd7d2ddb1e6001737e7461c9e8..696c6492edb6049f6a10865f6f5012821884cebc 100644
--- a/src/dolphinmainwindow.cpp
+++ b/src/dolphinmainwindow.cpp
@@ -833,9 +833,7 @@ void DolphinMainWindow::undo()
 
 void DolphinMainWindow::cut()
 {
-    if (m_activeViewContainer->view()->selectedItems().isEmpty()) {
-        m_activeViewContainer->setSelectionModeEnabled(true, actionCollection(), SelectionMode::BottomBar::Contents::CutContents);
-    } else {
+    if (m_activeViewContainer->view()->selectedItemsCount() > 0) {
         m_activeViewContainer->view()->cutSelectedItemsToClipboard();
         m_activeViewContainer->setSelectionModeEnabled(false);
     }
@@ -843,9 +841,7 @@ void DolphinMainWindow::cut()
 
 void DolphinMainWindow::copy()
 {
-    if (m_activeViewContainer->view()->selectedItems().isEmpty()) {
-        m_activeViewContainer->setSelectionModeEnabled(true, actionCollection(), SelectionMode::BottomBar::Contents::CopyContents);
-    } else {
+    if (m_activeViewContainer->view()->selectedItemsCount() > 0) {
         m_activeViewContainer->view()->copySelectedItemsToClipboard();
         m_activeViewContainer->setSelectionModeEnabled(false);
     }
@@ -1832,7 +1828,6 @@ void DolphinMainWindow::setupActions()
         "</para>"));
     toggleSelectionModeAction->setIcon(QIcon::fromTheme(QStringLiteral("quickwizard")));
     toggleSelectionModeAction->setCheckable(true);
-    actionCollection()->setDefaultShortcut(toggleSelectionModeAction, Qt::Key_Space);
     connect(toggleSelectionModeAction, &QAction::triggered, this, &DolphinMainWindow::toggleSelectionMode);
 
     // A special version of the toggleSelectionModeAction for the toolbar that also contains a menu
@@ -2419,19 +2414,10 @@ void DolphinMainWindow::updateFileAndEditActions()
     QAction *copyLocation = col->action(QString("copy_location"));
 
     if (list.isEmpty()) {
+        m_actionTextHelper->textsWhenNothingIsSelectedEnabled(true);
         stateChanged(QStringLiteral("has_no_selection"));
 
-        // All actions that need a selection to function can be enabled because they should trigger selection mode.
-        renameAction->setEnabled(true);
-        moveToTrashAction->setEnabled(true);
-        deleteAction->setEnabled(true);
-        cutAction->setEnabled(true);
-        duplicateAction->setEnabled(true);
         addToPlacesAction->setEnabled(true);
-        copyLocation->setEnabled(true);
-        // Them triggering selection mode and not directly acting on selected items is signified by adding "…" to their text.
-        m_actionTextHelper->textsWhenNothingIsSelectedEnabled(true);
-
     } else {
         m_actionTextHelper->textsWhenNothingIsSelectedEnabled(false);
         stateChanged(QStringLiteral("has_selection"));
@@ -2455,7 +2441,7 @@ void DolphinMainWindow::updateFileAndEditActions()
         cutAction->setEnabled(capabilitiesSource.supportsMoving());
         m_disabledActionNotifier->setDisabledReason(cutAction, i18nc("@info", "Cannot cut: You do not have permission to move items from this folder."));
         copyLocation->setEnabled(list.length() == 1);
-        showTarget->setEnabled(list.length() == 1 && list.at(0).isLink());
+        showTarget->setEnabled(list.length() == 1 && list.first().isLink());
         duplicateAction->setEnabled(capabilitiesSource.supportsWriting());
         m_disabledActionNotifier->setDisabledReason(duplicateAction,
                                                     i18nc("@info", "Cannot duplicate here: You do not have permission to create items in this folder."));
diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp
index 392dc410e605a9b4a069dd985071732933eed807..40410b987bb8a176b32f6fcb034093fd15242b0f 100644
--- a/src/kitemviews/kitemlistcontroller.cpp
+++ b/src/kitemviews/kitemlistcontroller.cpp
@@ -478,6 +478,7 @@ bool KItemListController::keyPressEvent(QKeyEvent *event)
                 const int current = m_selectionManager->currentItem();
                 if (!m_selectionManager->isSelected(current)) {
                     m_selectionManager->setSelected(current);
+                    m_selectionManager->beginAnchoredSelection(current);
                     break;
                 }
             }
diff --git a/src/views/dolphinviewactionhandler.cpp b/src/views/dolphinviewactionhandler.cpp
index 2934e800582e28dd48d7da835a8361d4cf56e93a..41605467d76037912159d52d4e759babd43daae1 100644
--- a/src/views/dolphinviewactionhandler.cpp
+++ b/src/views/dolphinviewactionhandler.cpp
@@ -423,20 +423,15 @@ void DolphinViewActionHandler::slotViewModeActionTriggered(QAction *action)
 
 void DolphinViewActionHandler::slotRename()
 {
-    if (m_currentView->selectedItemsCount() == 0) {
-        Q_EMIT selectionModeChangeTriggered(true, SelectionMode::BottomBar::Contents::RenameContents);
-    } else {
+    if (m_currentView->selectedItemsCount() > 0) {
         Q_EMIT actionBeingHandled();
         m_currentView->renameSelectedItems();
-        // We don't exit selectionMode here because users might want to rename more items.
     }
 }
 
 void DolphinViewActionHandler::slotTrashActivated()
 {
-    if (m_currentView->selectedItemsCount() == 0) {
-        Q_EMIT selectionModeChangeTriggered(true, SelectionMode::BottomBar::Contents::MoveToTrashContents);
-    } else {
+    if (m_currentView->selectedItemsCount() > 0) {
         Q_EMIT actionBeingHandled();
         m_currentView->trashSelectedItems();
         Q_EMIT selectionModeChangeTriggered(false);
@@ -445,9 +440,7 @@ void DolphinViewActionHandler::slotTrashActivated()
 
 void DolphinViewActionHandler::slotDeleteItems()
 {
-    if (m_currentView->selectedItemsCount() == 0) {
-        Q_EMIT selectionModeChangeTriggered(true, SelectionMode::BottomBar::Contents::DeleteContents);
-    } else {
+    if (m_currentView->selectedItemsCount() > 0) {
         Q_EMIT actionBeingHandled();
         m_currentView->deleteSelectedItems();
         Q_EMIT selectionModeChangeTriggered(false);
@@ -748,9 +741,7 @@ void DolphinViewActionHandler::slotAdjustViewProperties()
 
 void DolphinViewActionHandler::slotDuplicate()
 {
-    if (m_currentView->selectedItemsCount() == 0) {
-        Q_EMIT selectionModeChangeTriggered(true, SelectionMode::BottomBar::Contents::DuplicateContents);
-    } else {
+    if (m_currentView->selectedItemsCount() > 0) {
         Q_EMIT actionBeingHandled();
         m_currentView->duplicateSelectedItems();
         Q_EMIT selectionModeChangeTriggered(false);
@@ -776,9 +767,7 @@ void DolphinViewActionHandler::slotProperties()
 
 void DolphinViewActionHandler::slotCopyPath()
 {
-    if (m_currentView->selectedItemsCount() == 0) {
-        Q_EMIT selectionModeChangeTriggered(true, SelectionMode::BottomBar::Contents::CopyLocationContents);
-    } else {
+    if (m_currentView->selectedItemsCount() > 0) {
         m_currentView->copyPathToClipboard();
         Q_EMIT selectionModeChangeTriggered(false);
     }
openSUSE Build Service is sponsored by