diff options
author | Patrick Tasse | 2019-03-15 14:49:46 +0000 |
---|---|---|
committer | Andrey Loskutov | 2019-03-15 19:29:17 +0000 |
commit | d167dd39e3533803e618b0bfdac2ba9b98b35e36 (patch) | |
tree | ccd92ad5847578b141abc27ed0848517a3572618 | |
parent | 503289d0caf86406cbac61cd86030cd7d18ec4d8 (diff) | |
download | eclipse.platform.swt-d167dd39e3533803e618b0bfdac2ba9b98b35e36.tar.gz eclipse.platform.swt-d167dd39e3533803e618b0bfdac2ba9b98b35e36.tar.xz eclipse.platform.swt-d167dd39e3533803e618b0bfdac2ba9b98b35e36.zip |
Bug 545421: [GTK] Missing button mask in selection event state mask
Use GDK.gdk_event_get_button() value to set the button mask in
Event.stateMask for SWT.Selection and SWT.DefaultSelection events.
Change-Id: I3b8c17f7ff2ae1627659e875f3c02dd1af0d924d
Signed-off-by: Patrick Tasse <patrick.tasse@gmail.com>
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java index e9e5b82a0a..d935f7ae49 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2018 IBM Corporation and others. + * Copyright (c) 2000, 2019 IBM Corporation and others. * * This program and the accompanying materials * are made available under the terms of the Eclipse Public License 2.0 @@ -1537,11 +1537,16 @@ void sendSelectionEvent (int eventType, Event event, boolean send) { int currentEventType = GDK.gdk_event_get_event_type(ptr); currentEventType = Control.fixGdkEventTypeValues(currentEventType); switch (currentEventType) { - case GDK.GDK_KEY_PRESS: - case GDK.GDK_KEY_RELEASE: case GDK.GDK_BUTTON_PRESS: case GDK.GDK_2BUTTON_PRESS: case GDK.GDK_BUTTON_RELEASE: { + int [] eventButton = new int [1]; + GDK.gdk_event_get_button(ptr, eventButton); + setButtonState(event, eventButton [0]); + } + //$FALL-THROUGH$ + case GDK.GDK_KEY_PRESS: + case GDK.GDK_KEY_RELEASE: { int [] state = new int [1]; GDK.gdk_event_get_state (ptr, state); setInputState (event, state [0]); @@ -1685,6 +1690,17 @@ void setFontDescription (long /*int*/ widget, long /*int*/ font) { GTK.gtk_style_context_invalidate (context); } +void setButtonState (Event event, int eventButton) { + switch (eventButton) { + case 1: event.stateMask |= SWT.BUTTON1; break; + case 2: event.stateMask |= SWT.BUTTON2; break; + case 3: event.stateMask |= SWT.BUTTON3; break; + case 4: event.stateMask |= SWT.BUTTON4; break; + case 5: event.stateMask |= SWT.BUTTON5; break; + default: + } +} + boolean setInputState (Event event, int state) { if ((state & GDK.GDK_MOD1_MASK) != 0) event.stateMask |= SWT.ALT; if ((state & GDK.GDK_SHIFT_MASK) != 0) event.stateMask |= SWT.SHIFT; |