]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/panels/places/placespanel.cpp
Merge remote-tracking branch 'origin/master' into kf6
[dolphin.git] / src / panels / places / placespanel.cpp
index 6467f9c230ceabe09b396bb9dd04ff381d190d04..8bdb18ba224681d1cece10e21f1dff5dd1004baa 100644 (file)
@@ -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"
 
@@ -48,9 +47,18 @@ PlacesPanel::PlacesPanel(QWidget *parent)
     connect(m_configureTrashAction, &QAction::triggered, this, &PlacesPanel::slotConfigureTrash);
     addAction(m_configureTrashAction);
 
+    m_openInSplitView = new QAction(QIcon::fromTheme(QStringLiteral("view-right-new")), i18nc("@action:inmenu", "Open in Split View"));
+    m_openInSplitView->setPriority(QAction::HighPriority);
+    connect(m_openInSplitView, &QAction::triggered, this, [this]() {
+        const QUrl url = currentIndex().data(KFilePlacesModel::UrlRole).toUrl();
+        Q_EMIT openInSplitViewRequested(url);
+    });
+
+    addAction(m_openInSplitView);
+
     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
@@ -142,7 +150,7 @@ static bool isInternalDrag(const QMimeData *mimeData)
 
 void PlacesPanel::dragMoveEvent(QDragMoveEvent *event)
 {
-    const QModelIndex index = indexAt(event->pos());
+    const QModelIndex index = indexAt(event->position().toPoint());
     if (index.isValid()) {
         auto *placesModel = static_cast<KFilePlacesModel *>(model());
 
@@ -189,6 +197,7 @@ void PlacesPanel::slotContextMenuAboutToShow(const QModelIndex &index, QMenu *me
     const Solid::Device device = placesModel->deviceForIndex(index);
 
     m_configureTrashAction->setVisible(url.scheme() == QLatin1String("trash"));
+    m_openInSplitView->setVisible(url.isValid());
 
     // show customContextMenuActions only on the view's context menu
     if (!url.isValid() && !device.isValid()) {
@@ -276,3 +285,5 @@ void PlacesPanel::connectDeviceSignals(const QModelIndex &index)
 
     connect(storageAccess, &Solid::StorageAccess::teardownRequested, this, &PlacesPanel::slotTearDownRequestedExternally);
 }
+
+#include "moc_placespanel.cpp"