diff options
author | Leo Ufimtsev | 2018-02-14 19:57:11 +0000 |
---|---|---|
committer | Leo Ufimtsev | 2018-02-14 19:57:52 +0000 |
commit | 42fb9859bce0c7cfca6625ecd61f7aecc8bf0bb2 (patch) | |
tree | 369b1446f05abd7d2df88027947c9ca358dfe466 /bundles/org.eclipse.swt | |
parent | 8a745bffa40230e73fb229950d6d0520b474c8f3 (diff) | |
download | eclipse.platform.swt-42fb9859bce0c7cfca6625ecd61f7aecc8bf0bb2.tar.gz eclipse.platform.swt-42fb9859bce0c7cfca6625ecd61f7aecc8bf0bb2.tar.xz eclipse.platform.swt-42fb9859bce0c7cfca6625ecd61f7aecc8bf0bb2.zip |
Bug 521387 – [Gtk3] Alt+Enter performs two actions in Package Explorer
Fix to make alt+enter not send selection event, to be consitent with
win32.
Bug: https://bugs.eclipse.org/bugs/show_bug.cgi?id=521387
Change-Id: I79a1208057b598b61d07dcef2457c371b5030cea
Signed-off-by: Leo Ufimtsev <lufimtse@redhat.com>
Diffstat (limited to 'bundles/org.eclipse.swt')
4 files changed, 32 insertions, 13 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java index be0579bf01..84fc1bf5c5 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java @@ -156,10 +156,23 @@ public class GDK extends OS { public static final int GDK_Meta_L = 0xFFE7; public static final int GDK_Meta_R = 0xFFE8; public static final int GDK_MAP = 14; - public static final int GDK_MOD1_MASK = 0x8; //usually 'alt' modifier. - public static final int GDK_SUPER_MASK = 0x4000000; - public static final int GDK_HYPER_MASK = 0x8000000; - public static final int GDK_META_MASK = 0x10000000; + + /** + * <p> + * GDK_MOD1_MASK = usually 'alt' button <br> + * GDK_SUPER_MASK = usually win/cmd button <br> + * GDK_HYPER_MASK = usually ctrl button <br> + * By 'usually' I mean you should test. In my experience keyboard behaviour can vary. + * </p> + * + * See also: + * <a href="https://askubuntu.com/questions/19558/what-are-the-meta-super-and-hyper-keys">Stack Overflow post</a> + */ + public static final int GDK_MOD1_MASK = 0x8, + GDK_SUPER_MASK = 0x4000000, + GDK_HYPER_MASK = 0x8000000, + GDK_META_MASK = 0x10000000; + public static final int GDK_MOTION_NOTIFY = 0x3; public static final int GDK_NO_EXPOSE = 30; public static final int GDK_NONE = 0; diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java index 245ae0e7b7..34aa82efa3 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java @@ -954,9 +954,11 @@ void keyPressDefaultSelectionHandler (long /*int*/ event, int key) { int keymask = gdk_event_get_state (event); switch (key) { case GDK.GDK_Return: - // Send DefaultSelectionEvent when: Enter, Shift+Enter, Ctrl+Enter, Alt+Enter are pressed. - // Not when (Meta|Super|Hyper)+Enter, reason is stateMask is not provided on Gtk. Does not trigger on Win32 either. - if ((keymask & (GDK.GDK_SUPER_MASK | GDK.GDK_META_MASK | GDK.GDK_HYPER_MASK)) == 0) { + // Send DefaultSelectionEvent when: + // when : Enter, Shift+Enter, Ctrl+Enter are pressed. + // Not when: Alt+Enter, (Meta|Super|Hyper)+Enter, reason is stateMask is not provided on Gtk. + // Note: alt+Enter creates a selection on GTK, but we filter it out to be a bit more consitent Win32 (521387) + if ((keymask & (GDK.GDK_SUPER_MASK | GDK.GDK_META_MASK | GDK.GDK_HYPER_MASK | GDK.GDK_MOD1_MASK)) == 0) { sendTreeDefaultSelection (); } break; diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java index b664f29eea..ccf01ecac0 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java @@ -2150,9 +2150,11 @@ void keyPressDefaultSelectionHandler (long /*int*/ event, int key) { int keymask = gdk_event_get_state (event); switch (key) { case GDK.GDK_Return: - // Send DefaultSelectionEvent when: Enter, Shift+Enter, Ctrl+Enter, Alt+Enter are pressed. - // Not when (Meta|Super|Hyper)+Enter, reason is stateMask is not provided on Gtk. Does not trigger on Win32 either. - if ((keymask & (GDK.GDK_SUPER_MASK | GDK.GDK_META_MASK | GDK.GDK_HYPER_MASK)) == 0) { + // Send DefaultSelectionEvent when: + // when : Enter, Shift+Enter, Ctrl+Enter are pressed. + // Not when: Alt+Enter, (Meta|Super|Hyper)+Enter, reason is stateMask is not provided on Gtk. + // Note: alt+Enter creates a selection on GTK, but we filter it out to be a bit more consitent Win32 (521387) + if ((keymask & (GDK.GDK_SUPER_MASK | GDK.GDK_META_MASK | GDK.GDK_HYPER_MASK | GDK.GDK_MOD1_MASK)) == 0) { sendTreeDefaultSelection (); } break; diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java index 2428361f4e..86b72a029c 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java @@ -2172,9 +2172,11 @@ void keyPressDefaultSelectionHandler (long /*int*/ event, int key) { int keymask = gdk_event_get_state (event); switch (key) { case GDK.GDK_Return: - // Send DefaultSelectionEvent when: Enter, Shift+Enter, Ctrl+Enter, Alt+Enter are pressed. - // Not when (Meta|Super|Hyper)+Enter, reason is stateMask is not provided on Gtk. Does not trigger on Win32 either. - if ((keymask & (GDK.GDK_SUPER_MASK | GDK.GDK_META_MASK | GDK.GDK_HYPER_MASK)) == 0) { + // Send DefaultSelectionEvent when: + // when : Enter, Shift+Enter, Ctrl+Enter are pressed. + // Not when: Alt+Enter, (Meta|Super|Hyper)+Enter, reason is stateMask is not provided on Gtk. + // Note: alt+Enter creates a selection on GTK, but we filter it out to be a bit more consitent Win32 (521387) + if ((keymask & (GDK.GDK_SUPER_MASK | GDK.GDK_META_MASK | GDK.GDK_HYPER_MASK | GDK.GDK_MOD1_MASK)) == 0) { sendTreeDefaultSelection (); } break; |