diff options
author | Matthias Clasen <mclasen@redhat.com> | 2021-06-02 23:11:05 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2021-06-03 10:07:43 -0400 |
commit | ee0e82610c0155a3269718d029037c7634351a39 (patch) | |
tree | eb0002575ac5856d3bf1077e9b1848ee3b1ccc55 | |
parent | 26c5240dcb23d709e338d47c3512bc951b99b835 (diff) | |
download | gtk+-ee0e82610c0155a3269718d029037c7634351a39.tar.gz |
stack: Add default state saving
Save the current child.
-rw-r--r-- | gtk/gtkstack.c | 25 |
1 files changed, 25 insertions, 0 deletions
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) |