summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-09-13 16:10:37 +0000
committerMatthias Clasen <mclasen@redhat.com>2021-09-13 16:10:37 +0000
commit2a12a3e6d904225a74f82d02c3b6aadbbd453323 (patch)
tree1454335f4143796bd5d4c4db821f1814a71d5d85
parentf572ca52d237e628cc61036a394b46a50dd433ee (diff)
parentcdc1fa166dad68fe158b10ae0fea8a3a27f1051f (diff)
downloadgtk+-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.c7
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);
}