]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphinviewcontainer.cpp
Enable Ctrl/Shift-Click to open folder in a new tab/window
[dolphin.git] / src / dolphinviewcontainer.cpp
index a647b6f43f9d1286fc319d94c05cd55b4c8c3c4e..48e73ca898a49a8ed20bfde778c3c96ae2ec78d3 100644 (file)
@@ -32,6 +32,7 @@
 #include <KUrlComboBox>
 
 #include <QDropEvent>
+#include <QGuiApplication>
 #include <QLoggingCategory>
 #include <QMimeData>
 #include <QTimer>
@@ -642,7 +643,7 @@ void DolphinViewContainer::slotUrlIsFileError(const QUrl& url)
     }
 }
 
-void DolphinViewContainer::slotItemActivated(const KFileItemitem)
+void DolphinViewContainer::slotItemActivated(const KFileItem &item)
 {
     // It is possible to activate items on inactive views by
     // drag & drop operations. Assure that activating an item always
@@ -651,7 +652,17 @@ void DolphinViewContainer::slotItemActivated(const KFileItem& item)
 
     const QUrl& url = DolphinView::openItemAsFolderUrl(item, GeneralSettings::browseThroughArchives());
     if (!url.isEmpty()) {
-        setUrl(url);
+        const auto modifiers = QGuiApplication::keyboardModifiers();
+        // keep in sync with KUrlNavigator::slotNavigatorButtonClicked
+        if (modifiers & Qt::ControlModifier && modifiers & Qt::ShiftModifier) {
+            Q_EMIT activeTabRequested(url);
+        } else if (modifiers & Qt::ControlModifier) {
+            Q_EMIT tabRequested(url);
+        } else if (modifiers & Qt::ShiftModifier) {
+            Dolphin::openNewWindow({KFilePlacesModel::convertedUrl(url)}, this);
+        } else {
+            setUrl(url);
+        }
         return;
     }