diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-01-15 19:57:20 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2015-01-19 16:52:21 +0100 |
commit | f8ccbdf8a85689b93a174f796066e656e28345d9 (patch) | |
tree | 2daff4fe81871f44aee8a3216fa3b41791f2a4b9 /plugins/keyboard | |
parent | ca754de5039fed6cb96b883dd8e41d8b22ebeea6 (diff) | |
download | gnome-settings-daemon-f8ccbdf8a85689b93a174f796066e656e28345d9.tar.gz |
common: Migrate input settings to gsettings-desktop-schemas keys
The deprecated keys are kept in isolated ".deprecated" suffixed schemas.
On plugin startup, the settings-daemon paths are opened with these legacy
schemas, and all user-modified keys are dumped to the new location and
reset.
This ensures the transition just happens once per-key, and ensures the
dconf database is left clean.
https://bugzilla.gnome.org/show_bug.cgi?id=742593
Diffstat (limited to 'plugins/keyboard')
-rw-r--r-- | plugins/keyboard/gsd-keyboard-manager.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/plugins/keyboard/gsd-keyboard-manager.c b/plugins/keyboard/gsd-keyboard-manager.c index 55ac2d0b..df496dcd 100644 --- a/plugins/keyboard/gsd-keyboard-manager.c +++ b/plugins/keyboard/gsd-keyboard-manager.c @@ -45,6 +45,7 @@ #include "gsd-keyboard-manager.h" #include "gsd-input-helper.h" #include "gsd-enums.h" +#include "gsd-settings-migrate.h" #define GSD_KEYBOARD_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_KEYBOARD_MANAGER, GsdKeyboardManagerPrivate)) @@ -833,12 +834,29 @@ gsd_keyboard_manager_finalize (GObject *object) G_OBJECT_CLASS (gsd_keyboard_manager_parent_class)->finalize (object); } +static void +migrate_keyboard_settings (void) +{ + GsdSettingsMigrateEntry entries[] = { + { "repeat", "repeat", NULL }, + { "repeat-interval", "repeat-interval", NULL }, + { "delay", "delay", NULL } + }; + + gsd_settings_migrate_check ("org.gnome.settings-daemon.peripherals.keyboard.deprecated", + "/org/gnome/settings-daemon/peripherals/keyboard/", + "org.gnome.desktop.peripherals.keyboard", + "/org/gnome/desktop/peripherals/keyboard/", + entries, G_N_ELEMENTS (entries)); +} + GsdKeyboardManager * gsd_keyboard_manager_new (void) { if (manager_object != NULL) { g_object_ref (manager_object); } else { + migrate_keyboard_settings (); manager_object = g_object_new (GSD_TYPE_KEYBOARD_MANAGER, NULL); g_object_add_weak_pointer (manager_object, (gpointer *) &manager_object); |