From ee0e82610c0155a3269718d029037c7634351a39 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 2 Jun 2021 23:11:05 -0400 Subject: [PATCH] stack: Add default state saving Save the current child. --- gtk/gtkstack.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/gtk/gtkstack.c b/gtk/gtkstack.c index d53eb0653a..8106efea55 100644 --- a/gtk/gtkstack.c +++ b/gtk/gtkstack.c @@ -794,6 +794,29 @@ gtk_stack_set_property (GObject *object, } } +static gboolean +gtk_stack_save_state (GtkWidget *widget, + GVariantDict *dict, + gboolean *save_children) +{ + g_variant_dict_insert (dict, "visible-page", "s", gtk_stack_get_visible_child_name (GTK_STACK (widget))); + *save_children = TRUE; + + return TRUE; +} + +static gboolean +gtk_stack_restore_state (GtkWidget *widget, + GVariant *data) +{ + const char *name; + + if (g_variant_lookup (data, "visible-page", "&s", &name)) + gtk_stack_set_visible_child_name (GTK_STACK (widget), name); + + return TRUE; +} + static void gtk_stack_class_init (GtkStackClass *klass) { @@ -810,6 +833,8 @@ gtk_stack_class_init (GtkStackClass *klass) widget_class->measure = gtk_stack_measure; widget_class->compute_expand = gtk_stack_compute_expand; widget_class->get_request_mode = gtk_stack_get_request_mode; + widget_class->save_state = gtk_stack_save_state; + widget_class->restore_state = gtk_stack_restore_state; /** * GtkStack:hhomogeneous: (attributes org.gtk.Property.get=gtk_stack_get_hhomogeneous org.gtk.Property.set=gtk_stack_set_hhomogeneous)