diff options
| author | David Faure <[email protected]> | 2013-05-04 20:31:02 +0200 |
|---|---|---|
| committer | David Faure <[email protected]> | 2013-05-05 22:42:49 +0200 |
| commit | 57e65aab7f6f54524168c6812fac7e7dbb700ab9 (patch) | |
| tree | 003f656f1e6d91abd5b7893c4c536877e880ab4f /src/dolphincontextmenu.h | |
| parent | 926ed302d6b64c200d56817b62eeecb5abd5fd4f (diff) | |
Reimplement handling of Shift while showing menu without KModifierKeyInfo
Finding out whether shift is pressed initially can be done
with qApp->keyboardModifiers(), and finding out that the user is pressing
or release shift can be done with keyPressEvent/keyReleaseEvent.
This required to inherit from KMenu rather than having the KMenu
as a member.
KModifierKeyInfo is only implemented on X11, so this makes the code
more portable. If similar solutions can be found for other users of
KModifierKeyInfo, it will be deprecated in KF5.
REVIEW: 110303
Diffstat (limited to 'src/dolphincontextmenu.h')
| -rw-r--r-- | src/dolphincontextmenu.h | 26 |
1 files changed, 5 insertions, 21 deletions
diff --git a/src/dolphincontextmenu.h b/src/dolphincontextmenu.h index 3d0005d30..1c65fab13 100644 --- a/src/dolphincontextmenu.h +++ b/src/dolphincontextmenu.h @@ -24,6 +24,7 @@ #include <KService> #include <KUrl> #include <konq_copytomenu.h> +#include <KMenu> #include <QObject> @@ -31,8 +32,6 @@ #include <QScopedPointer> -class KMenu; -class KFileItem; class QAction; class DolphinMainWindow; class KFileItemActions; @@ -50,7 +49,7 @@ class KFileItemListProperties; * - 'Actions': Contains all actions which can be applied to the * given item. */ -class DolphinContextMenu : public QObject +class DolphinContextMenu : public KMenu { Q_OBJECT @@ -91,26 +90,12 @@ public: */ 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(); +protected: + virtual void keyPressEvent(QKeyEvent *ev); + virtual void keyReleaseEvent(QKeyEvent *ev); private slots: /** - * Is invoked if a key modifier has been pressed and updates the context - * menu to show the 'Delete' action instead of the 'Move To Trash' action - * if the shift-key has been pressed. - */ - void slotKeyModifierPressed(Qt::Key key, bool pressed); - - /** * Triggers the 'Delete'-action if the shift-key has been pressed, otherwise * the 'Move to Trash'-action gets triggered. */ @@ -209,7 +194,6 @@ private: int m_context; KonqCopyToMenu m_copyToMenu; QList<QAction*> m_customActions; - KMenu* m_popup; Command m_command; |
