summaryrefslogtreecommitdiff
path: root/plugins/common
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2019-02-06 16:28:37 +0100
committerBenjamin Berg <bberg@redhat.com>2019-05-27 16:48:25 +0200
commit2624c77f15755a77169ca45466ee239d99b44ade (patch)
tree9a6e84776d4d8b33fb123592fd79420ad5ccdd00 /plugins/common
parent70abccb8700d9a799e60a07f30ee71c5168e12dc (diff)
downloadgnome-settings-daemon-2624c77f15755a77169ca45466ee239d99b44ade.tar.gz
common: Pass new default value during schema migration
This will be required to migrate user settings of keybindings.
Diffstat (limited to 'plugins/common')
-rw-r--r--plugins/common/gsd-settings-migrate.c9
-rw-r--r--plugins/common/gsd-settings-migrate.h2
2 files changed, 7 insertions, 4 deletions
diff --git a/plugins/common/gsd-settings-migrate.c b/plugins/common/gsd-settings-migrate.c
index a6d10df0..b72b6987 100644
--- a/plugins/common/gsd-settings-migrate.c
+++ b/plugins/common/gsd-settings-migrate.c
@@ -34,13 +34,14 @@ gsd_settings_migrate_check (const gchar *origin_schema,
guint n_entries)
{
GSettings *origin_settings, *dest_settings;
- GVariant *variant;
guint i;
origin_settings = g_settings_new_with_path (origin_schema, origin_path);
dest_settings = g_settings_new_with_path (dest_schema, dest_path);
for (i = 0; i < n_entries; i++) {
+ g_autoptr(GVariant) variant = NULL;
+
variant = g_settings_get_user_value (origin_settings, entries[i].origin_key);
if (!variant)
@@ -48,9 +49,12 @@ gsd_settings_migrate_check (const gchar *origin_schema,
if (entries[i].dest_key) {
if (entries[i].func) {
+ g_autoptr(GVariant) new_default = NULL;
GVariant *modified;
- modified = entries[i].func (variant);
+ new_default = g_settings_get_default_value (dest_settings, entries[i].dest_key);
+
+ modified = entries[i].func (variant, new_default);
g_variant_unref (variant);
variant = g_variant_ref_sink (modified);
}
@@ -59,7 +63,6 @@ gsd_settings_migrate_check (const gchar *origin_schema,
}
g_settings_reset (origin_settings, entries[i].origin_key);
- g_variant_unref (variant);
}
g_object_unref (origin_settings);
diff --git a/plugins/common/gsd-settings-migrate.h b/plugins/common/gsd-settings-migrate.h
index 65e8598c..7211a975 100644
--- a/plugins/common/gsd-settings-migrate.h
+++ b/plugins/common/gsd-settings-migrate.h
@@ -24,7 +24,7 @@
typedef struct _GsdSettingsMigrateEntry GsdSettingsMigrateEntry;
-typedef GVariant * (* GsdSettingsMigrateFunc) (GVariant *variant);
+typedef GVariant * (* GsdSettingsMigrateFunc) (GVariant *variant, GVariant *new_default);
struct _GsdSettingsMigrateEntry
{