summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java
diff options
context:
space:
mode:
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java')
-rw-r--r--bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java5
1 files changed, 5 insertions, 0 deletions
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 af86c4f365..9d16684e8f 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
@@ -709,14 +709,18 @@ public boolean open () {
/* Tracker behaves like a Dialog with its own OS event loop. */
GdkEvent gdkEvent = new GdkEvent();
+ Display display = this.display;
while (tracking) {
if (parent != null && parent.isDisposed ()) break;
int /*long*/ eventPtr;
while (true) {
+ display.runSkin ();
+ display.runDeferredLayouts ();
eventPtr = OS.gdk_event_get ();
if (eventPtr != 0) {
break;
} else {
+ display.runAsyncMessages (false);
try { Thread.sleep(50); } catch (Exception ex) {}
}
}
@@ -744,6 +748,7 @@ public boolean open () {
OS.gtk_main_do_event (eventPtr);
}
OS.gdk_event_free (eventPtr);
+ display.runAsyncMessages (false);
}
if (!isDisposed ()) {
update ();