From 0f50abe12dce43341c7921cf35f71da95b3df8cc Mon Sep 17 00:00:00 2001 From: Felix Ernst Date: Thu, 19 May 2022 01:44:03 +0200 Subject: [PATCH] Don't show selection toggle areas on files while in selection mode --- src/kitemviews/kitemlistwidget.cpp | 11 +++++++++++ src/views/dolphinitemlistview.cpp | 15 ++++++++++++++- src/views/dolphinitemlistview.h | 16 ++++++++++++++++ src/views/dolphinview.cpp | 4 +++- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index 5541aa9f89..ae721c7e41 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -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(); } } diff --git a/src/views/dolphinitemlistview.cpp b/src/views/dolphinitemlistview.cpp index d667081da3..0210dd5948 100644 --- a/src/views/dolphinitemlistview.cpp +++ b/src/views/dolphinitemlistview.cpp @@ -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())); diff --git a/src/views/dolphinitemlistview.h b/src/views/dolphinitemlistview.h index 1637752a6b..464aec1b4c 100644 --- a/src/views/dolphinitemlistview.h +++ b/src/views/dolphinitemlistview.h @@ -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; }; diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index 5a36ad1036..c346006783 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -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(); 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); }