Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java2
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java2
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java2
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Widget.java11
4 files changed, 14 insertions, 3 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java
index dd76101d62..08439027ae 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Sash.java
@@ -311,7 +311,7 @@ long /*int*/ gtk_key_press_event (long /*int*/ widget, long /*int*/ eventPtr) {
event.height = height;
if ((parent.style & SWT.MIRRORED) != 0) event.x = parent.getClientWidth () - width - event.x;
sendSelectionEvent (SWT.Selection, event, true);
- if (ptrGrabResult == OS.GDK_GRAB_SUCCESS) OS.gdk_pointer_ungrab (OS.GDK_CURRENT_TIME);
+ if (ptrGrabResult == OS.GDK_GRAB_SUCCESS) gdk_pointer_ungrab (window, OS.GDK_CURRENT_TIME);
if (isDisposed ()) break;
if (event.doit) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
index fe81d14776..628c2bbd45 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Shell.java
@@ -2100,7 +2100,7 @@ public void setVisible (boolean visible) {
mapped = true;
if ((style & mask) != 0) {
- OS.gdk_pointer_ungrab (OS.GDK_CURRENT_TIME);
+ gdk_pointer_ungrab(shellHandle,OS.GDK_CURRENT_TIME);
}
opened = true;
if (!moved) {
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java
index 8ecf5d5815..1c67b98671 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java
@@ -988,7 +988,7 @@ public void setStippled (boolean stippled) {
}
void ungrab () {
- if (grabbed) OS.gdk_pointer_ungrab (OS.GDK_CURRENT_TIME);
+ if (grabbed) gdk_pointer_ungrab(window, OS.GDK_CURRENT_TIME);
}
void update () {
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 8d86e07d3a..3be94d91d4 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
@@ -1866,6 +1866,17 @@ int gdk_pointer_grab (long /*int*/ window, int grab_ownership, boolean owner_eve
}
}
+void gdk_pointer_ungrab (long /*int*/ window, int time_) {
+ if (OS.GTK_VERSION >= OS.VERSION(3, 0, 0)) {
+ long /*int*/ display = OS.gdk_window_get_display (window);
+ long /*int*/ device_manager = OS.gdk_display_get_device_manager (display);
+ long /*int*/ pointer = OS.gdk_device_manager_get_client_pointer (device_manager);
+ OS.gdk_device_ungrab(pointer, time_);
+ } else {
+ OS.gdk_pointer_ungrab(time_);
+ }
+}
+
/**
* Returns a string containing a concise, human-readable
* description of the receiver.

Back to the top