From 8ae230b9ae23348fadfd0f4be1a13c8e85855c1d Mon Sep 17 00:00:00 2001 From: Jens Granseuer Date: Mon, 7 May 2007 22:28:48 +0000 Subject: [PATCH] add support for unsetting GConf values if the conversion handlers return 2007-05-08 Jens Granseuer * gconf-property-editor.c: (peditor_set_gconf_value), (peditor_combo_box_widget_changed): add support for unsetting GConf values if the conversion handlers return null, and use it for the combo box editor svn path=/trunk/; revision=7573 --- capplets/common/ChangeLog | 7 +++++++ capplets/common/gconf-property-editor.c | 24 +++++++++++++++++------- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/capplets/common/ChangeLog b/capplets/common/ChangeLog index 8372596c2..4a2366cf2 100644 --- a/capplets/common/ChangeLog +++ b/capplets/common/ChangeLog @@ -1,3 +1,10 @@ +2007-05-08 Jens Granseuer + + * gconf-property-editor.c: (peditor_set_gconf_value), + (peditor_combo_box_widget_changed): + add support for unsetting GConf values if the conversion handlers return + null, and use it for the combo box editor + 2007-05-01 Jens Granseuer * gconf-property-editor.c: (peditor_combo_box_value_changed), diff --git a/capplets/common/gconf-property-editor.c b/capplets/common/gconf-property-editor.c index dbfc1cbfd..dedf0ef1c 100644 --- a/capplets/common/gconf-property-editor.c +++ b/capplets/common/gconf-property-editor.c @@ -410,14 +410,23 @@ peditor_set_gconf_value (GConfPropertyEditor *peditor, const gchar *key, GConfValue *value) { - GConfClient *client = gconf_client_get_default(); - if (peditor->p->changeset != NULL) - gconf_change_set_set (peditor->p->changeset, peditor->p->key, value); - else - gconf_client_set (client, peditor->p->key, value, NULL); + if (peditor->p->changeset != NULL) { + if (value) + gconf_change_set_set (peditor->p->changeset, peditor->p->key, value); + else + gconf_change_set_unset (peditor->p->changeset, peditor->p->key); + } else { + GConfClient *client = gconf_client_get_default(); + + if (value) + gconf_client_set (client, peditor->p->key, value, NULL); + else + gconf_client_unset (client, peditor->p->key, NULL); + + g_object_unref (client); + } - g_object_unref (client); } static void @@ -1022,7 +1031,8 @@ peditor_combo_box_widget_changed (GConfPropertyEditor *peditor, peditor_set_gconf_value (peditor, peditor->p->key, value); g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value); gconf_value_free (value_wid); - gconf_value_free (value); + if (value) + gconf_value_free (value); } GObject *