]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.cpp
Merge branch 'release/20.12'
[dolphin.git] / src / dolphincontextmenu.cpp
index 0c192de38a99e8db232246372e2b310aa5c99277..925951bbf3d8b4f4d27c3e4a872f19adb7c6c61f 100644 (file)
@@ -432,23 +432,23 @@ QAction* DolphinContextMenu::createPasteAction()
 {
     QAction* action = nullptr;
     KFileItem destItem;
-    if (!m_fileInfo.isNull()) {
+    if (!m_fileInfo.isNull() && m_selectedItems.count() <= 1) {
         destItem = m_fileInfo;
     } else {
         destItem = baseFileItem();
     }
 
     if (!destItem.isNull() && destItem.isDir()) {
-        if (m_selectedItems.count() <= 1) {
-            const QMimeData *mimeData = QApplication::clipboard()->mimeData();
-            bool canPaste;
-            const QString text = KIO::pasteActionText(mimeData, &canPaste, destItem);
-            action = new QAction(QIcon::fromTheme(QStringLiteral("edit-paste")), text, this);
-            if (canPaste) {
+        const QMimeData *mimeData = QApplication::clipboard()->mimeData();
+        bool canPaste;
+        const QString text = KIO::pasteActionText(mimeData, &canPaste, destItem);
+        if (canPaste) {
+            if (destItem == m_fileInfo) {
+                // if paste destination is a selected folder
+                action = new QAction(QIcon::fromTheme(QStringLiteral("edit-paste")), text, this);
                 connect(action, &QAction::triggered, m_mainWindow, &DolphinMainWindow::pasteIntoFolder);
             } else {
-                // don't add the unavailable action
-                action = nullptr;
+                action = m_mainWindow->actionCollection()->action(KStandardAction::name(KStandardAction::Paste));
             }
         }
     }
@@ -497,8 +497,7 @@ void DolphinContextMenu::addAdditionalActions(KFileItemActions &fileItemActions,
     if (props.isDirectory() && props.isLocal()) {
         additionalActions << m_mainWindow->actionCollection()->action(QStringLiteral("open_terminal"));
     }
-    fileItemActions.addServiceActionsTo(this, additionalActions);
-    fileItemActions.addPluginActionsTo(this);
+    fileItemActions.addActionsTo(this, KFileItemActions::MenuActionSource::All, additionalActions);
 
     const DolphinView* view = m_mainWindow->activeViewContainer()->view();
     const QList<QAction*> versionControlActions = view->versionControlActions(m_selectedItems);