[gtk/state-saving: 4/14] colorchooserwidget: Add default state saving
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/state-saving: 4/14] colorchooserwidget: Add default state saving
- Date: Thu, 3 Jun 2021 14:09:33 +0000 (UTC)
commit fd499188bda7891a84fcb9e77e0da3a63d04d6d5
Author: Matthias Clasen <mclasen redhat com>
Date: Wed Jun 2 22:39:19 2021 -0400
colorchooserwidget: Add default state saving
Save the rgba and the show-editor state. We
currently don't save the contents of the entry.
gtk/gtkcolorchooserwidget.c | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
---
diff --git a/gtk/gtkcolorchooserwidget.c b/gtk/gtkcolorchooserwidget.c
index afc2a77411..29141724dd 100644
--- a/gtk/gtkcolorchooserwidget.c
+++ b/gtk/gtkcolorchooserwidget.c
@@ -263,6 +263,43 @@ update_from_editor (GtkColorEditor *editor,
g_object_notify (G_OBJECT (widget), "rgba");
}
+static gboolean
+gtk_color_chooser_save_state (GtkWidget *widget,
+ GVariantDict *dict,
+ gboolean *save_children)
+{
+ GtkColorChooserWidget *cc = GTK_COLOR_CHOOSER_WIDGET (widget);
+ GdkRGBA c;
+
+ gtk_color_chooser_get_rgba (GTK_COLOR_CHOOSER (cc), &c);
+
+ g_variant_dict_insert (dict, "show-editor", "b", gtk_widget_get_visible (cc->editor));
+ g_variant_dict_insert (dict, "rgba", "(dddd)", c.red, c.green, c.blue, c.alpha);
+ *save_children = TRUE;
+
+ return TRUE;
+}
+
+static gboolean
+gtk_color_chooser_restore_state (GtkWidget *widget,
+ GVariant *data)
+{
+ GtkColorChooserWidget *cc = GTK_COLOR_CHOOSER_WIDGET (widget);
+ gboolean show_editor;
+ double r, g, b, a;
+
+ if (g_variant_lookup (data, "show-editor", "b", &show_editor))
+ gtk_color_chooser_widget_set_show_editor (cc, show_editor);
+
+ if (g_variant_lookup (data, "rgba", "(dddd)", &r, &g, &b, &a))
+ {
+ GdkRGBA c = { r, g, b, a };
+ gtk_color_chooser_set_rgba (GTK_COLOR_CHOOSER (cc), &c);
+ }
+
+ return TRUE;
+}
+
/* UI construction {{{1 */
static void
@@ -706,6 +743,8 @@ gtk_color_chooser_widget_class_init (GtkColorChooserWidgetClass *class)
widget_class->grab_focus = gtk_widget_grab_focus_child;
widget_class->focus = gtk_widget_focus_child;
+ widget_class->save_state = gtk_color_chooser_save_state;
+ widget_class->restore_state = gtk_color_chooser_restore_state;
g_object_class_override_property (object_class, PROP_RGBA, "rgba");
g_object_class_override_property (object_class, PROP_USE_ALPHA, "use-alpha");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]