]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.cpp
SVN_SILENT made messages (.desktop file) - always resolve ours
[dolphin.git] / src / dolphincontextmenu.cpp
index 2be4e6f523f17bb7e5e860ac364e2854d021b9ba..d4807d3a7669635179ab0591c0c47e5a189fde37 100644 (file)
@@ -1,22 +1,8 @@
-  /***************************************************************************
- *   Copyright (C) 2006 by Peter Penz (peter.penz@gmx.at) and              *
- *   Cvetoslav Ludmiloff                                                   *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA            *
- ***************************************************************************/
+/*
+ * SPDX-FileCopyrightText: 2006 Peter Penz (peter.penz@gmx.at) and Cvetoslav Ludmiloff
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
 
 #include "dolphincontextmenu.h"
 
@@ -97,9 +83,9 @@ DolphinContextMenu::Command DolphinContextMenu::open()
     const auto scheme = m_baseUrl.scheme();
     if (scheme == QLatin1String("trash")) {
         m_context |= TrashContext;
-    } else if (scheme == QLatin1String("search")) {
+    } else if (scheme.contains(QLatin1String("search"))) {
         m_context |= SearchContext;
-    } else if (scheme == QLatin1String("timeline")) {
+    } else if (scheme.contains(QLatin1String("timeline"))) {
         m_context |= TimelineContext;
     }
 
@@ -194,8 +180,8 @@ void DolphinContextMenu::addDirectoryItemContextMenu(KFileItemActions &fileItemA
 
     const KFileItemListProperties& selectedItemsProps = selectedItemsProperties();
 
-    addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_window")));
     addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_tab")));
+    addAction(m_mainWindow->actionCollection()->action(QStringLiteral("open_in_new_window")));
 
     // Insert 'Open With' entries
     addOpenWithActions(fileItemActions);
@@ -205,7 +191,7 @@ void DolphinContextMenu::addDirectoryItemContextMenu(KFileItemActions &fileItemA
      const DolphinView* view = m_mainWindow->activeViewContainer()->view();
      newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
      newFileMenu->checkUpToDate();
-     newFileMenu->setPopupFiles(m_fileInfo.url());
+     newFileMenu->setPopupFiles(QList<QUrl>() << m_fileInfo.url());
      newFileMenu->setEnabled(selectedItemsProps.supportsWriting());
      connect(newFileMenu, &DolphinNewFileMenu::fileCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
      connect(newFileMenu, &DolphinNewFileMenu::directoryCreated, newFileMenu, &DolphinNewFileMenu::deleteLater);
@@ -342,19 +328,19 @@ void DolphinContextMenu::openViewportContextMenu()
     fileItemActions.setParentWidget(m_mainWindow);
     fileItemActions.setItemListProperties(baseUrlProperties);
 
-    // Don't show "Open With" menu items if the current dir is empty, because there's
-    // generally no app that can do anything interesting with an empty directory
-    if (view->itemsCount() != 0) {
-        addOpenWithActions(fileItemActions);
-    }
-
     // Set up and insert 'Create New' menu
     KNewFileMenu* newFileMenu = m_mainWindow->newFileMenu();
     newFileMenu->setViewShowsHiddenFiles(view->hiddenFilesShown());
     newFileMenu->checkUpToDate();
-    newFileMenu->setPopupFiles(m_baseUrl);
+    newFileMenu->setPopupFiles(QList<QUrl>() << m_baseUrl);
     addMenu(newFileMenu->menu());
 
+    // Don't show "Open With" menu items if the current dir is empty, because there's
+    // generally no app that can do anything interesting with an empty directory
+    if (view->itemsCount() != 0) {
+        addOpenWithActions(fileItemActions);
+    }
+
     QAction* pasteAction = createPasteAction();
     addAction(pasteAction);
 
@@ -392,10 +378,14 @@ void DolphinContextMenu::insertDefaultItemActions(const KFileItemListProperties&
 {
     const KActionCollection* collection = m_mainWindow->actionCollection();
 
-    // Insert 'Cut', 'Copy' and 'Paste'
+    // Insert 'Cut', 'Copy', 'Copy Location' and 'Paste'
     addAction(collection->action(KStandardAction::name(KStandardAction::Cut)));
     addAction(collection->action(KStandardAction::name(KStandardAction::Copy)));
+    QAction* copyPathAction = collection->action(QString("copy_location"));
+    copyPathAction->setEnabled(m_selectedItems.size() == 1);
+    addAction(copyPathAction);
     addAction(createPasteAction());
+    addAction(m_mainWindow->actionCollection()->action(QStringLiteral("duplicate")));
 
     addSeparator();