From 65b18bf935faad814b9ab3b318fdbfb4772d2051 Mon Sep 17 00:00:00 2001 From: Alessio Bonfiglio Date: Fri, 17 Dec 2021 14:11:46 +0000 Subject: Enable Ctrl/Shift-Click to open folder in a new tab/window and more --- src/panels/folders/folderspanel.cpp | 22 ++++++++++++++++++++-- src/panels/folders/folderspanel.h | 3 ++- 2 files changed, 22 insertions(+), 3 deletions(-) (limited to 'src/panels/folders') diff --git a/src/panels/folders/folderspanel.cpp b/src/panels/folders/folderspanel.cpp index 19a05d2b6..d3d8b81f1 100644 --- a/src/panels/folders/folderspanel.cpp +++ b/src/panels/folders/folderspanel.cpp @@ -189,7 +189,19 @@ void FoldersPanel::slotItemActivated(int index) { const KFileItem item = m_model->fileItem(index); if (!item.isNull()) { - Q_EMIT folderActivated(item.url()); + const auto modifiers = QGuiApplication::keyboardModifiers(); + // keep in sync with KUrlNavigator::slotNavigatorButtonClicked + if (modifiers & Qt::ControlModifier && modifiers & Qt::ShiftModifier) { + Q_EMIT folderInNewActiveTab(item.url()); + } else if (modifiers & Qt::ControlModifier) { + Q_EMIT folderInNewTab(item.url()); + } else if (modifiers & Qt::ShiftModifier) { + // The shift modifier is not considered because it is used to expand the tree view without actually + // opening the folder + return; + } else { + Q_EMIT folderActivated(item.url()); + } } } @@ -197,7 +209,13 @@ void FoldersPanel::slotItemMiddleClicked(int index) { const KFileItem item = m_model->fileItem(index); if (!item.isNull()) { - Q_EMIT folderMiddleClicked(item.url()); + const auto modifiers = QGuiApplication::keyboardModifiers(); + // keep in sync with KUrlNavigator::slotNavigatorButtonClicked + if (modifiers & Qt::ShiftModifier) { + Q_EMIT folderInNewActiveTab(item.url()); + } else { + Q_EMIT folderInNewTab(item.url()); + } } } diff --git a/src/panels/folders/folderspanel.h b/src/panels/folders/folderspanel.h index 26c8e4cb9..3ce7870ff 100644 --- a/src/panels/folders/folderspanel.h +++ b/src/panels/folders/folderspanel.h @@ -42,7 +42,8 @@ public: Q_SIGNALS: void folderActivated(const QUrl& url); - void folderMiddleClicked(const QUrl& url); + void folderInNewTab(const QUrl &url); + void folderInNewActiveTab(const QUrl &url); void errorMessage(const QString& error); protected: -- cgit v1.3