diff options
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ProgressBar.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ProgressBar.java | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ProgressBar.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ProgressBar.java index 3a2767c2e8..56de5dbbfe 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ProgressBar.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ProgressBar.java @@ -139,6 +139,20 @@ public int getSelection () { return selection; } +int gtk_realize (int widget) { + int result = super.gtk_realize (widget); + if (result != 0) return result; + updateBar (selection, minimum, maximum); + return 0; +} + +void hookEvents () { + super.hookEvents (); + Display display = getDisplay (); + int windowProc2 = display.windowProc2; + OS.g_signal_connect_after (handle, OS.realize, windowProc2, REALIZE); +} + void releaseWidget () { super.releaseWidget (); if (timerId != 0) OS.gtk_timeout_remove (timerId); @@ -209,6 +223,8 @@ int timerProc (int widget) { } void updateBar (int selection, int minimum, int maximum) { + if ((OS.GTK_WIDGET_FLAGS (handle) & OS.GTK_REALIZED) == 0) return; + double fraction = minimum == maximum ? 1 : (double)(selection - minimum) / (maximum - minimum); OS.gtk_progress_bar_set_fraction (handle, fraction); /* |