Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLeo Ufimtsev2018-02-14 19:57:11 +0000
committerLeo Ufimtsev2018-02-14 19:57:52 +0000
commit42fb9859bce0c7cfca6625ecd61f7aecc8bf0bb2 (patch)
tree369b1446f05abd7d2df88027947c9ca358dfe466 /bundles/org.eclipse.swt
parent8a745bffa40230e73fb229950d6d0520b474c8f3 (diff)
downloadeclipse.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')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT PI/gtk/org/eclipse/swt/internal/gtk/GDK.java21
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/List.java8
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Table.java8
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tree.java8
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;

Back to the top