summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-06-02 23:23:21 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-06-03 10:07:43 -0400
commitbc2d8bfa334827a5e76427a473d3739dd5ed0f9e (patch)
tree6478ccd57c86e02a3d371c5e36c24a4ecf96f6d4
parentee0e82610c0155a3269718d029037c7634351a39 (diff)
downloadgtk+-bc2d8bfa334827a5e76427a473d3739dd5ed0f9e.tar.gz
passwordentry: Add default state saving
In addition to the text, save the visibility.
-rw-r--r--gtk/gtkpasswordentry.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/gtk/gtkpasswordentry.c b/gtk/gtkpasswordentry.c
index 1c11f5cb6a..bb4e0fc4bb 100644
--- a/gtk/gtkpasswordentry.c
+++ b/gtk/gtkpasswordentry.c
@@ -415,6 +415,32 @@ gtk_password_entry_mnemonic_activate (GtkWidget *widget,
return TRUE;
}
+static gboolean
+gtk_password_entry_save_state (GtkWidget *widget,
+ GVariantDict *dict,
+ gboolean *save_children)
+{
+ GtkPasswordEntry *entry = GTK_PASSWORD_ENTRY (widget);
+
+ g_variant_dict_insert (dict, "visibility", "b", gtk_text_get_visibility (GTK_TEXT (entry->entry)));
+ *save_children = TRUE;
+
+ return TRUE;
+}
+
+static gboolean
+gtk_password_entry_restore_state (GtkWidget *widget,
+ GVariant *data)
+{
+ GtkPasswordEntry *entry = GTK_PASSWORD_ENTRY (widget);
+ gboolean value;
+
+ if (g_variant_lookup (data, "visibility", "b", &value))
+ gtk_text_set_visibility (GTK_TEXT (entry->entry), value);
+
+ return TRUE;
+}
+
static void
gtk_password_entry_class_init (GtkPasswordEntryClass *klass)
{
@@ -431,6 +457,8 @@ gtk_password_entry_class_init (GtkPasswordEntryClass *klass)
widget_class->mnemonic_activate = gtk_password_entry_mnemonic_activate;
widget_class->grab_focus = gtk_widget_grab_focus_child;
widget_class->focus = gtk_widget_focus_child;
+ widget_class->save_state = gtk_password_entry_save_state;
+ widget_class->restore_state = gtk_password_entry_restore_state;
/**
* GtkPasswordEntry:placeholder-text: