Change the type of gsettings key "keyboard" from s to as.

Also rename it to "keyboards".
This commit is contained in:
Daiki Ueno
2011-09-12 15:33:20 +09:00
parent 362b210a31
commit ef3ea618d2
5 changed files with 76 additions and 50 deletions

View File

@ -103,17 +103,19 @@ enum FocusListenerType {
};
static gboolean
set_keyboard (Client *client,
const gchar *keyboard)
set_keyboards (Client *client,
gchar **keyboards)
{
if (g_strcmp0 (keyboard, "system") == 0) {
if (g_strv_length (keyboards) == 0) {
if (!client_enable_xkl (client)) {
g_printerr ("Can't register xklavier event listeners\n");
return FALSE;
}
} else {
if (!client_set_keyboard (client, keyboard)) {
g_printerr ("Can't set keyboard \"%s\"\n", keyboard);
if (!client_set_keyboards (client, keyboards)) {
gchar *str = g_strjoinv (", ", keyboards);
g_printerr ("Can't set keyboards \"%s\"\n", str);
g_free (str);
return FALSE;
}
}
@ -133,7 +135,7 @@ main (int argc, char **argv)
GMainLoop *loop = NULL;
gint focus;
GSettings *settings = NULL;
gchar *keyboard;
gchar **keyboards;
gint retval = 0;
if (!gtk_init_check (&argc, &argv)) {
@ -312,13 +314,13 @@ main (int argc, char **argv)
G_CALLBACK(on_destroyed), loop);
g_object_unref (eekboard);
keyboard = g_settings_get_string (settings, "keyboard");
if (!set_keyboard (client, keyboard)) {
g_free (keyboard);
keyboards = g_settings_get_strv (settings, "keyboards");
if (!set_keyboards (client, keyboards)) {
g_strfreev (keyboards);
retval = 1;
goto out;
}
g_free (keyboard);
g_strfreev (keyboards);
g_main_loop_run (loop);