]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Don't show selection toggle areas on files while in selection mode
authorFelix Ernst <fe.a.ernst@gmail.com>
Wed, 18 May 2022 23:44:03 +0000 (01:44 +0200)
committerFelix Ernst <fe.a.ernst@gmail.com>
Sun, 14 Aug 2022 14:42:40 +0000 (14:42 +0000)
src/kitemviews/kitemlistwidget.cpp
src/views/dolphinitemlistview.cpp
src/views/dolphinitemlistview.h
src/views/dolphinview.cpp

index 5541aa9f89f811658004c67d9a4f48c97730d9d5..ae721c7e41d3f0664ff898888fc74192bb3f4211 100644 (file)
@@ -333,6 +333,17 @@ void KItemListWidget::setEnabledSelectionToggle(bool enable)
 {
     if (m_enabledSelectionToggle != enable) {
         m_enabledSelectionToggle = enable;
+
+        // We want the change to take effect immediately.
+        if (m_enabledSelectionToggle) {
+            if (m_hovered) {
+                initializeSelectionToggle();
+            }
+        } else if (m_selectionToggle) {
+            m_selectionToggle->deleteLater();
+            m_selectionToggle = nullptr;
+        }
+
         update();
     }
 }
index d667081da38451c2f12d07e393712cf9d6b7c57c..0210dd59487d7c1fbc11d7a85ca2795b2381b9a3 100644 (file)
@@ -65,6 +65,19 @@ int DolphinItemListView::zoomLevel() const
     return m_zoomLevel;
 }
 
+void DolphinItemListView::setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled selectionTogglesEnabled)
+{
+    m_selectionTogglesEnabled = selectionTogglesEnabled;
+    switch (m_selectionTogglesEnabled) {
+    case True:
+        return setEnabledSelectionToggles(true);
+    case False:
+        return setEnabledSelectionToggles(false);
+    case FollowSetting:
+        return setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
+    }
+}
+
 void DolphinItemListView::readSettings()
 {
     ViewModeSettings settings(itemLayout());
@@ -72,7 +85,7 @@ void DolphinItemListView::readSettings()
 
     beginTransaction();
 
-    setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
+    setEnabledSelectionToggles(m_selectionTogglesEnabled);
     setHighlightEntireRow(DetailsModeSettings::sidePadding());
     setSupportsItemExpanding(itemLayoutSupportsItemExpanding(itemLayout()));
 
index 1637752a6bca968333ee917c5179fa75f181ad51..464aec1b4c833148189e62968e382a7351f112bc 100644 (file)
@@ -30,6 +30,18 @@ public:
     void setZoomLevel(int level);
     int zoomLevel() const;
 
+    enum SelectionTogglesEnabled {
+        True,
+        False,
+        FollowSetting
+    };
+    /**
+     * Sets whether the items in this view should show a small selection toggle area on mouse hover.
+     * The default for this view is to follow the "showSelectionToggle" setting but this method can
+     * be used to ignore that setting and force a different value.
+     */
+    void setEnabledSelectionToggles(SelectionTogglesEnabled selectionTogglesEnabled);
+
     void readSettings();
     void writeSettings();
 
@@ -46,6 +58,10 @@ protected:
 private:
     void updateGridSize();
 
+    using KItemListView::setEnabledSelectionToggles; // Makes sure that the setEnabledSelectionToggles() declaration above doesn't hide
+                                                     // the one from the base class so we can still use it privately.
+    SelectionTogglesEnabled m_selectionTogglesEnabled = FollowSetting;
+
 private:
     int m_zoomLevel;
 };
index 5a36ad1036b8cc86dc7c51ce6f1187733ad16fe6..c3460067839705ee65eb97febe5b95c3810b33bd 100644 (file)
@@ -111,7 +111,7 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
 
     m_model = new KFileItemModel(this);
     m_view = new DolphinItemListView();
-    m_view->setEnabledSelectionToggles(GeneralSettings::showSelectionToggle());
+    m_view->setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled::FollowSetting);
     m_view->setVisibleRoles({"text"});
     applyModeToView();
 
@@ -289,9 +289,11 @@ void DolphinView::setSelectionModeEnabled(const bool enabled)
         m_proxyStyle = std::make_unique<SelectionMode::SingleClickSelectionProxyStyle>();
         setStyle(m_proxyStyle.get());
         m_view->setStyle(m_proxyStyle.get());
+        m_view->setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled::False);
     } else {
         setStyle(QApplication::style());
         m_view->setStyle(QApplication::style());
+        m_view->setEnabledSelectionToggles(DolphinItemListView::SelectionTogglesEnabled::FollowSetting);
     }
     m_container->controller()->setSelectionModeEnabled(enabled);
 }