summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-06-02 23:11:05 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-06-03 10:07:43 -0400
commitee0e82610c0155a3269718d029037c7634351a39 (patch)
treeeb0002575ac5856d3bf1077e9b1848ee3b1ccc55
parent26c5240dcb23d709e338d47c3512bc951b99b835 (diff)
downloadgtk+-ee0e82610c0155a3269718d029037c7634351a39.tar.gz
stack: Add default state saving
Save the current child.
-rw-r--r--gtk/gtkstack.c25
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)