summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilip Withnall <withnall@endlessm.com>2018-02-02 11:13:23 +0100
committerPhilip Withnall <withnall@endlessm.com>2019-08-21 20:08:04 +0300
commit63abca2963c80a723b42e7459b0e07798175e4f1 (patch)
tree3a860c644c4e6a6d54daadfb46b6c28ffb36daa7
parent5558c668a98f74dab468e34b150c2f10e70fa40c (diff)
downloadglib-63abca2963c80a723b42e7459b0e07798175e4f1.tar.gz
gsettings: Add missing changed() call to delayed settings backend
When resetting a key in the delayed settings backend, g_settings_backend_changed() was not called to notify the backend of the change. Signed-off-by: Philip Withnall <withnall@endlessm.com> Fixes: #1309
-rw-r--r--gio/gdelayedsettingsbackend.c2
-rw-r--r--gio/tests/gsettings.c18
2 files changed, 20 insertions, 0 deletions
diff --git a/gio/gdelayedsettingsbackend.c b/gio/gdelayedsettingsbackend.c
index e41393f8e..9ba3c5b64 100644
--- a/gio/gdelayedsettingsbackend.c
+++ b/gio/gdelayedsettingsbackend.c
@@ -204,6 +204,8 @@ g_delayed_settings_backend_reset (GSettingsBackend *backend,
g_tree_insert (delayed->priv->delayed, g_strdup (key), NULL);
g_mutex_unlock (&delayed->priv->lock);
+ g_settings_backend_changed (backend, key, origin_tag);
+
if (was_empty)
g_delayed_settings_backend_notify_unapplied (delayed);
}
diff --git a/gio/tests/gsettings.c b/gio/tests/gsettings.c
index 77905ec7a..baadca8f5 100644
--- a/gio/tests/gsettings.c
+++ b/gio/tests/gsettings.c
@@ -509,6 +509,24 @@ test_delay_apply (void)
g_assert_true (changed_cb_called);
g_assert_false (changed_cb_called2);
+ /* Try resetting the key and ensure a notification is emitted on the delayed #GSettings object. */
+ changed_cb_called = FALSE;
+ changed_cb_called2 = FALSE;
+
+ g_settings_reset (settings, "greeting");
+
+ g_assert_true (changed_cb_called);
+ g_assert_false (changed_cb_called2);
+
+ /* Locally change the greeting again. */
+ changed_cb_called = FALSE;
+ changed_cb_called2 = FALSE;
+
+ g_settings_set (settings, "greeting", "s", "greetings from test_delay_apply");
+
+ g_assert_true (changed_cb_called);
+ g_assert_false (changed_cb_called2);
+
writable = g_settings_is_writable (settings, "greeting");
g_assert_true (writable);