summaryrefslogtreecommitdiff
path: root/plugins/keyboard
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2015-01-15 19:57:20 +0100
committerCarlos Garnacho <carlosg@gnome.org>2015-01-19 16:52:21 +0100
commitf8ccbdf8a85689b93a174f796066e656e28345d9 (patch)
tree2daff4fe81871f44aee8a3216fa3b41791f2a4b9 /plugins/keyboard
parentca754de5039fed6cb96b883dd8e41d8b22ebeea6 (diff)
downloadgnome-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.c18
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);