]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.cpp
Merge remote-tracking branch 'origin/KDE/4.10'
[dolphin.git] / src / dolphincontextmenu.cpp
index af8b61384938c6dd8d2a0d7b37c838dd9aa9c16d..f66847334621f0d0deab3776ccb0c779ca3cabb9 100644 (file)
@@ -235,6 +235,27 @@ void DolphinContextMenu::openItemContextMenu()
                                                    this);
             addAction(openParentInNewTabAction);
 
+            addSeparator();
+        } else if (!DolphinView::openItemAsFolderUrl(m_fileInfo).isEmpty()) {
+            // insert 'Open in new window' and 'Open in new tab' entries
+            addAction(m_mainWindow->actionCollection()->action("open_in_new_window"));
+            addAction(m_mainWindow->actionCollection()->action("open_in_new_tab"));
+
+            addSeparator();
+        }
+    } else {
+        bool selectionHasOnlyDirs = true;
+        foreach (const KFileItem& item, m_selectedItems) {
+            const KUrl& url = DolphinView::openItemAsFolderUrl(item);
+            if (url.isEmpty()) {
+                selectionHasOnlyDirs = false;
+                break;
+            }
+        }
+
+        if (selectionHasOnlyDirs) {
+            // insert 'Open in new tab' entry
+            addAction(m_mainWindow->actionCollection()->action("open_in_new_tabs"));
             addSeparator();
         }
     }
@@ -455,20 +476,25 @@ void DolphinContextMenu::addFileItemPluginActions()
     const KConfigGroup showGroup = config.group("Show");
 
     foreach (const KSharedPtr<KService>& service, pluginServices) {
-        if (!showGroup.readEntry(service->desktopEntryName(), true)) {
-            // The plugin has been disabled
-            continue;
-        }
-
         // Old API (kdelibs-4.6.0 only)
         KFileItemActionPlugin* plugin = service->createInstance<KFileItemActionPlugin>();
         if (plugin) {
+            if (!showGroup.readEntry(service->desktopEntryName(), true)) {
+                // The plugin has been disabled
+                continue;
+            }
+
             plugin->setParent(this);
             addActions(plugin->actions(props, m_mainWindow));
         }
         // New API (kdelibs >= 4.6.1)
         KAbstractFileItemActionPlugin* abstractPlugin = service->createInstance<KAbstractFileItemActionPlugin>();
         if (abstractPlugin) {
+            if (!showGroup.readEntry(service->desktopEntryName(), abstractPlugin->enabledByDefault())) {
+                // The plugin has been disabled
+                continue;
+            }
+
             abstractPlugin->setParent(this);
             addActions(abstractPlugin->actions(props, m_mainWindow));
         }