]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/dolphincontextmenu.h
The &-shortcut from another action is not set until the action has been shown at...
[dolphin.git] / src / dolphincontextmenu.h
index ff8d1321031a60a8dca9bdd2a44bc54ff312a13e..d6b99105367aece4bf1b012310ea51623603dbd8 100644 (file)
@@ -25,7 +25,6 @@
 #include <kservice.h>
 #include <kurl.h>
 #include <konq_copytomenu.h>
-#include <kmodifierkeyinfo.h>
 
 #include <QtCore/QObject>
 
@@ -57,6 +56,13 @@ class DolphinContextMenu : public QObject
     Q_OBJECT
 
 public:
+    enum Command
+    {
+        None,
+        OpenParentFolderInNewWindow,
+        OpenParentFolderInNewTab
+    };
+
     /**
      * @parent        Pointer to the main window the context menu
      *                belongs to.
@@ -74,8 +80,26 @@ public:
 
     void setCustomActions(const QList<QAction*>& actions);
 
-    /** Opens the context menu model. */
-    void open();
+    /**
+     * Opens the context menu model and returns the requested
+     * command, that should be triggered by the caller. If
+     * Command::None has been returned, either the context-menu
+     * had been closed without executing an action or an
+     * already available action from the main-window has been
+     * executed.
+     */
+    Command open();
+
+    /**
+     * TODO: This method is a workaround for a X11-issue in combination
+     * with KModifierKeyInfo: When constructing KModifierKeyInfo in the
+     * constructor of the context menu, the user interface might freeze.
+     * To bypass this, the KModifierKeyInfo is constructed in DolphinMainWindow
+     * directly after starting the application. Remove this method, if
+     * the X11-issue got fixed (contact the maintainer of KModifierKeyInfo for
+     * more details).
+     */
+    static void initializeModifierKeyInfo();
 
 private slots:
     /**
@@ -154,8 +178,9 @@ private:
     QList<QAction*> m_customActions;
     QScopedPointer<KMenu> m_popup;
 
+    Command m_command;
+
     bool m_shiftPressed;
-    KModifierKeyInfo m_keyInfo;
     QAction* m_removeAction; // Action that represents either 'Move To Trash' or 'Delete'
 };