Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Tasse2019-03-15 14:49:46 +0000
committerAndrey Loskutov2019-03-15 19:29:17 +0000
commitd167dd39e3533803e618b0bfdac2ba9b98b35e36 (patch)
treeccd92ad5847578b141abc27ed0848517a3572618
parent503289d0caf86406cbac61cd86030cd7d18ec4d8 (diff)
downloadeclipse.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.java22
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;

Back to the top