From 278380bf176ec4488f3a55043a7502310f60fde6 Mon Sep 17 00:00:00 2001 From: Oliver Beard Date: Sun, 5 Feb 2023 20:34:50 +0000 Subject: panels/information: Add option to not show information for hovered item BUG: 364956 BUG: 453211 --- .../dolphin_informationpanelsettings.kcfg | 4 ++++ src/panels/information/informationpanel.cpp | 28 ++++++++++++++-------- 2 files changed, 22 insertions(+), 10 deletions(-) (limited to 'src/panels') diff --git a/src/panels/information/dolphin_informationpanelsettings.kcfg b/src/panels/information/dolphin_informationpanelsettings.kcfg index 7a5d29728..0f34e7310 100644 --- a/src/panels/information/dolphin_informationpanelsettings.kcfg +++ b/src/panels/information/dolphin_informationpanelsettings.kcfg @@ -14,6 +14,10 @@ false + + + true + diff --git a/src/panels/information/informationpanel.cpp b/src/panels/information/informationpanel.cpp index a0dff0d5e..6060e2d8c 100644 --- a/src/panels/information/informationpanel.cpp +++ b/src/panels/information/informationpanel.cpp @@ -62,13 +62,13 @@ void InformationPanel::setSelection(const KFileItemList &selection) if ((count == 1) && !selection.first().url().isEmpty()) { m_urlCandidate = selection.first().url(); } - m_infoTimer->start(); + showItemInfo(); } } void InformationPanel::requestDelayedItemInfo(const KFileItem &item) { - if (!isVisible()) { + if (!isVisible() || !InformationPanelSettings::showHovered()) { return; } @@ -160,6 +160,11 @@ void InformationPanel::showContextMenu(const QPoint &pos) previewAutoPlayAction->setCheckable(true); previewAutoPlayAction->setChecked(InformationPanelSettings::previewsAutoPlay()); + QAction *showHoveredAction = popup.addAction(i18nc("@action:inmenu", "Show item on hover")); + showHoveredAction->setIcon(QIcon::fromTheme(QStringLiteral("followmouse"))); + showHoveredAction->setCheckable(true); + showHoveredAction->setChecked(InformationPanelSettings::showHovered()); + QAction *configureAction = popup.addAction(i18nc("@action:inmenu", "Configure...")); configureAction->setIcon(QIcon::fromTheme(QStringLiteral("configure"))); if (m_inConfigurationMode) { @@ -188,18 +193,23 @@ void InformationPanel::showContextMenu(const QPoint &pos) if (action == previewAction) { InformationPanelSettings::setPreviewsShown(isChecked); m_content->refreshPreview(); + } else if (action == previewAutoPlayAction) { + InformationPanelSettings::setPreviewsAutoPlay(isChecked); + m_content->setPreviewAutoPlay(isChecked); + } else if (action == showHoveredAction) { + InformationPanelSettings::setShowHovered(isChecked); + if (!isChecked) { + m_hoveredItem = KFileItem(); + showItemInfo(); + } } else if (action == configureAction) { m_inConfigurationMode = true; m_content->configureShownProperties(); - } - if (action == dateformatAction) { + } else if (action == dateformatAction) { int dateFormat = static_cast(isChecked ? Baloo::DateFormats::ShortFormat : Baloo::DateFormats::LongFormat); InformationPanelSettings::setDateFormat(dateFormat); m_content->refreshMetaData(); - } else if (action == previewAutoPlayAction) { - InformationPanelSettings::setPreviewsAutoPlay(isChecked); - m_content->setPreviewAutoPlay(isChecked); } } @@ -218,7 +228,7 @@ void InformationPanel::showItemInfo() } else { // The information for exactly one item should be shown KFileItem item; - if (!m_hoveredItem.isNull()) { + if (!m_hoveredItem.isNull() && InformationPanelSettings::showHovered()) { item = m_hoveredItem; } else if (!m_selection.isEmpty()) { Q_ASSERT(m_selection.count() == 1); @@ -281,8 +291,6 @@ void InformationPanel::slotFileRenamed(const QString &source, const QString &des // item is selected, as the name of the item is shown. If this should change // in future: Before parsing the whole selection take care to test possible // performance bottlenecks when renaming several hundreds of files. - } else { - m_hoveredItem = KFileItem(destUrl); } showItemInfo(); -- cgit v1.3 From e190977a909899dddd748cc0ee32e6fbfe32c4e2 Mon Sep 17 00:00:00 2001 From: Méven Car Date: Mon, 3 Apr 2023 15:33:57 +0200 Subject: PlacesPanel: clean some warnings NO_CHANGELOG --- src/panels/places/placespanel.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src/panels') diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index 6467f9c23..bea2f0614 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -14,7 +14,6 @@ #include "dolphin_generalsettings.h" #include "dolphin_placespanelsettings.h" #include "dolphinplacesmodelsingleton.h" -#include "global.h" #include "settings/dolphinsettingsdialog.h" #include "views/draganddrophelper.h" @@ -50,7 +49,7 @@ PlacesPanel::PlacesPanel(QWidget *parent) connect(this, &PlacesPanel::contextMenuAboutToShow, this, &PlacesPanel::slotContextMenuAboutToShow); - connect(this, &PlacesPanel::iconSizeChanged, this, [this](const QSize &newSize) { + connect(this, &PlacesPanel::iconSizeChanged, this, [](const QSize &newSize) { int iconSize = qMin(newSize.width(), newSize.height()); if (iconSize == 0) { // Don't store 0 size, let's keep -1 for default/small/automatic -- cgit v1.3 From a654b8dae671140da73d70d80bb2f6e2b0282c18 Mon Sep 17 00:00:00 2001 From: Méven Car Date: Thu, 20 Apr 2023 18:15:56 +0200 Subject: TerminalPanel: better check if terminal needs to change its currentWorkingDirectory when unmounting CCBUG: 467403 --- src/dolphinmainwindow.cpp | 4 ++-- src/panels/terminal/terminalpanel.cpp | 6 +++--- src/panels/terminal/terminalpanel.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) (limited to 'src/panels') diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index 76b8ded6f..f043df310 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -1504,7 +1504,7 @@ void DolphinMainWindow::slotStorageTearDownFromPlacesRequested(const QString &mo setViewsToHomeIfMountPathOpen(mountPath); }); - if (m_terminalPanel && m_terminalPanel->currentWorkingDirectory().startsWith(mountPath)) { + if (m_terminalPanel && m_terminalPanel->currentWorkingDirectoryIsParentOf(mountPath)) { m_tearDownFromPlacesRequested = true; m_terminalPanel->goHome(); // m_placesPanel->proceedWithTearDown() will be called in slotTerminalDirectoryChanged @@ -1519,7 +1519,7 @@ void DolphinMainWindow::slotStorageTearDownExternallyRequested(const QString &mo setViewsToHomeIfMountPathOpen(mountPath); }); - if (m_terminalPanel && m_terminalPanel->currentWorkingDirectory().startsWith(mountPath)) { + if (m_terminalPanel && m_terminalPanel->currentWorkingDirectoryIsParentOf(mountPath)) { m_tearDownFromPlacesRequested = false; m_terminalPanel->goHome(); } diff --git a/src/panels/terminal/terminalpanel.cpp b/src/panels/terminal/terminalpanel.cpp index 53464e620..49eb42c1d 100644 --- a/src/panels/terminal/terminalpanel.cpp +++ b/src/panels/terminal/terminalpanel.cpp @@ -54,12 +54,12 @@ void TerminalPanel::goHome() sendCdToTerminal(QDir::homePath(), HistoryPolicy::SkipHistory); } -QString TerminalPanel::currentWorkingDirectory() +bool TerminalPanel::currentWorkingDirectoryIsParentOf(const QString &path) const { if (m_terminal) { - return m_terminal->currentWorkingDirectory(); + return m_terminal->currentWorkingDirectory().startsWith(path); } - return QString(); + return false; } void TerminalPanel::terminalExited() diff --git a/src/panels/terminal/terminalpanel.h b/src/panels/terminal/terminalpanel.h index a1b7af03a..49fd1b70d 100644 --- a/src/panels/terminal/terminalpanel.h +++ b/src/panels/terminal/terminalpanel.h @@ -45,7 +45,7 @@ public: * home when an unmounting request is received. */ void goHome(); - QString currentWorkingDirectory(); + bool currentWorkingDirectoryIsParentOf(const QString &path) const; bool isHiddenInVisibleWindow() const; bool terminalHasFocus() const; bool hasProgramRunning() const; -- cgit v1.3 From c9217337c717c336eb8cfcc27e9d4992bc1ebb37 Mon Sep 17 00:00:00 2001 From: Méven Car Date: Thu, 20 Apr 2023 18:15:56 +0200 Subject: TerminalPanel: rename currentWorkingDirectoryIsParentOf to currentWorkingDirectoryIsChildOf NO_CHANGELOG --- src/dolphinmainwindow.cpp | 4 ++-- src/panels/terminal/terminalpanel.cpp | 2 +- src/panels/terminal/terminalpanel.h | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/panels') diff --git a/src/dolphinmainwindow.cpp b/src/dolphinmainwindow.cpp index f043df310..7931bab58 100644 --- a/src/dolphinmainwindow.cpp +++ b/src/dolphinmainwindow.cpp @@ -1504,7 +1504,7 @@ void DolphinMainWindow::slotStorageTearDownFromPlacesRequested(const QString &mo setViewsToHomeIfMountPathOpen(mountPath); }); - if (m_terminalPanel && m_terminalPanel->currentWorkingDirectoryIsParentOf(mountPath)) { + if (m_terminalPanel && m_terminalPanel->currentWorkingDirectoryIsChildOf(mountPath)) { m_tearDownFromPlacesRequested = true; m_terminalPanel->goHome(); // m_placesPanel->proceedWithTearDown() will be called in slotTerminalDirectoryChanged @@ -1519,7 +1519,7 @@ void DolphinMainWindow::slotStorageTearDownExternallyRequested(const QString &mo setViewsToHomeIfMountPathOpen(mountPath); }); - if (m_terminalPanel && m_terminalPanel->currentWorkingDirectoryIsParentOf(mountPath)) { + if (m_terminalPanel && m_terminalPanel->currentWorkingDirectoryIsChildOf(mountPath)) { m_tearDownFromPlacesRequested = false; m_terminalPanel->goHome(); } diff --git a/src/panels/terminal/terminalpanel.cpp b/src/panels/terminal/terminalpanel.cpp index 49eb42c1d..9e0391c41 100644 --- a/src/panels/terminal/terminalpanel.cpp +++ b/src/panels/terminal/terminalpanel.cpp @@ -54,7 +54,7 @@ void TerminalPanel::goHome() sendCdToTerminal(QDir::homePath(), HistoryPolicy::SkipHistory); } -bool TerminalPanel::currentWorkingDirectoryIsParentOf(const QString &path) const +bool TerminalPanel::currentWorkingDirectoryIsChildOf(const QString &path) const { if (m_terminal) { return m_terminal->currentWorkingDirectory().startsWith(path); diff --git a/src/panels/terminal/terminalpanel.h b/src/panels/terminal/terminalpanel.h index 49fd1b70d..8eee3c10f 100644 --- a/src/panels/terminal/terminalpanel.h +++ b/src/panels/terminal/terminalpanel.h @@ -45,7 +45,7 @@ public: * home when an unmounting request is received. */ void goHome(); - bool currentWorkingDirectoryIsParentOf(const QString &path) const; + bool currentWorkingDirectoryIsChildOf(const QString &path) const; bool isHiddenInVisibleWindow() const; bool terminalHasFocus() const; bool hasProgramRunning() const; -- cgit v1.3