diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-09-13 16:10:37 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-09-13 16:10:37 +0000 |
commit | 2a12a3e6d904225a74f82d02c3b6aadbbd453323 (patch) | |
tree | 1454335f4143796bd5d4c4db821f1814a71d5d85 | |
parent | f572ca52d237e628cc61036a394b46a50dd433ee (diff) | |
parent | cdc1fa166dad68fe158b10ae0fea8a3a27f1051f (diff) | |
download | gtk+-2a12a3e6d904225a74f82d02c3b6aadbbd453323.tar.gz |
Merge branch 'fix_#4255' into 'master'
stack: Dispose children before emitting items-changed
Closes #4255
See merge request GNOME/gtk!3943
-rw-r--r-- | gtk/gtkstack.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/gtk/gtkstack.c b/gtk/gtkstack.c index dffc603452..469a25714a 100644 --- a/gtk/gtkstack.c +++ b/gtk/gtkstack.c @@ -690,13 +690,14 @@ gtk_stack_dispose (GObject *obj) GtkStack *stack = GTK_STACK (obj); GtkStackPrivate *priv = gtk_stack_get_instance_private (stack); GtkWidget *child; - - if (priv->pages) - g_list_model_items_changed (G_LIST_MODEL (priv->pages), 0, g_list_length (priv->children), 0); + guint n_pages = g_list_length (priv->children); while ((child = gtk_widget_get_first_child (GTK_WIDGET (stack)))) stack_remove (stack, child, TRUE); + if (priv->pages) + g_list_model_items_changed (G_LIST_MODEL (priv->pages), 0, n_pages, 0); + G_OBJECT_CLASS (gtk_stack_parent_class)->dispose (obj); } |