summaryrefslogtreecommitdiff
path: root/gtk/gtkprogressbar.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-07-27 19:24:49 -0400
committerMatthias Clasen <mclasen@redhat.com>2020-07-27 21:18:10 -0400
commitec5829c401080819fe00b51e3020b128097f6e55 (patch)
treec9170d9eddb1f2a5d16a6571759d0507d4c8a1cb /gtk/gtkprogressbar.c
parentd3a8597a9377d6ab8822160b7d3b4a5a94cba8ef (diff)
downloadgtk+-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.
Diffstat (limited to 'gtk/gtkprogressbar.c')
-rw-r--r--gtk/gtkprogressbar.c25
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);
}