diff options
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.java | 5 |
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 (); |