keys = g_settings_schema_list (settings->priv->schema, &n_keys);
for (i = 0; i < n_keys; i++)
- g_signal_emit (settings, g_settings_signals[SIGNAL_CHANGED],
- keys[i], g_quark_to_string (keys[i]));
+ {
+ const gchar *key = g_quark_to_string (keys[i]);
+
+ if (g_str_has_suffix (key, "/"))
+ continue;
+
+ g_signal_emit (settings, g_settings_signals[SIGNAL_CHANGED], keys[i], key);
+ }
return FALSE;
}
keys = g_settings_schema_list (settings->priv->schema, &n_keys);
for (i = 0; i < n_keys; i++)
- g_signal_emit (settings, g_settings_signals[SIGNAL_WRITABLE_CHANGED],
- keys[i], g_quark_to_string (keys[i]));
+ {
+ const gchar *key = g_quark_to_string (keys[i]);
+
+ if (g_str_has_suffix (key, "/"))
+ continue;
+
+ g_signal_emit (settings, g_settings_signals[SIGNAL_WRITABLE_CHANGED], keys[i], key);
+ }
return FALSE;
}
value = gvdb_table_get_raw_value (schema->table, key);
- if G_UNLIKELY (value == NULL)
+ if G_UNLIKELY (value == NULL || !g_variant_is_of_type (value, G_VARIANT_TYPE_TUPLE))
g_error ("Settings schema '%s' does not contain a key named '%s'", schema->id, key);
iter = g_variant_iter_new (value);