diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-07-27 19:24:49 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-07-27 21:18:10 -0400 |
commit | ec5829c401080819fe00b51e3020b128097f6e55 (patch) | |
tree | c9170d9eddb1f2a5d16a6571759d0507d4c8a1cb | |
parent | d3a8597a9377d6ab8822160b7d3b4a5a94cba8ef (diff) | |
download | gtk+-ec5829c401080819fe00b51e3020b128097f6e55.tar.gz |
progressbar: Fix up acessible state handling
We must initialize the properties in init, since they
are expected to be there ab initio, and we can't call
gtk_accessible_update_property from finalize - it causes
us to recreate an at context and badness follows.
-rw-r--r-- | gtk/gtkprogressbar.c | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/gtk/gtkprogressbar.c b/gtk/gtkprogressbar.c index 6255296ea9..08c58ebc50 100644 --- a/gtk/gtkprogressbar.c +++ b/gtk/gtkprogressbar.c @@ -154,6 +154,7 @@ static void gtk_progress_bar_get_property (GObject *object, static void gtk_progress_bar_act_mode_enter (GtkProgressBar *progress); static void gtk_progress_bar_act_mode_leave (GtkProgressBar *progress); static void gtk_progress_bar_finalize (GObject *object); +static void gtk_progress_bar_dispose (GObject *object); static void gtk_progress_bar_set_orientation (GtkProgressBar *progress, GtkOrientation orientation); static void gtk_progress_bar_direction_changed (GtkWidget *widget, @@ -173,6 +174,7 @@ gtk_progress_bar_class_init (GtkProgressBarClass *class) gobject_class->set_property = gtk_progress_bar_set_property; gobject_class->get_property = gtk_progress_bar_get_property; + gobject_class->dispose = gtk_progress_bar_dispose; gobject_class->finalize = gtk_progress_bar_finalize; widget_class->direction_changed = gtk_progress_bar_direction_changed; @@ -460,6 +462,12 @@ gtk_progress_bar_init (GtkProgressBar *pbar) pbar->orientation = GTK_ORIENTATION_VERTICAL; /* Just to force an update... */ gtk_progress_bar_set_orientation (pbar, GTK_ORIENTATION_HORIZONTAL); gtk_widget_update_orientation (GTK_WIDGET (pbar), pbar->orientation); + + gtk_accessible_update_property (GTK_ACCESSIBLE (pbar), + GTK_ACCESSIBLE_PROPERTY_VALUE_MAX, 1.0, + GTK_ACCESSIBLE_PROPERTY_VALUE_MIN, 0.0, + GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, 0.0, + -1); } static void @@ -556,19 +564,26 @@ gtk_progress_bar_new (void) } static void -gtk_progress_bar_finalize (GObject *object) +gtk_progress_bar_dispose (GObject *object) { GtkProgressBar *pbar = GTK_PROGRESS_BAR (object); if (pbar->activity_mode) gtk_progress_bar_act_mode_leave (pbar); - g_free (pbar->text); - g_clear_pointer (&pbar->label, gtk_widget_unparent); + g_clear_pointer (&pbar->progress_widget, gtk_widget_unparent); + g_clear_pointer (&pbar->trough_widget, gtk_widget_unparent); - gtk_widget_unparent (pbar->progress_widget); - gtk_widget_unparent (pbar->trough_widget); + G_OBJECT_CLASS (gtk_progress_bar_parent_class)->dispose (object); +} + +static void +gtk_progress_bar_finalize (GObject *object) +{ + GtkProgressBar *pbar = GTK_PROGRESS_BAR (object); + + g_free (pbar->text); G_OBJECT_CLASS (gtk_progress_bar_parent_class)->finalize (object); } |