65 lines
2.6 KiB
Diff
65 lines
2.6 KiB
Diff
From c2e0c03c03f47da9b117db0ba876732e84dcf0c4 Mon Sep 17 00:00:00 2001
|
|
From: Federico Mena Quintero <federico@gnome.org>
|
|
Date: Mon, 16 May 2016 19:18:43 -0500
|
|
Subject: [PATCH] Resurrect the code from upstream to set the default keyboard
|
|
from XKB if there is one.
|
|
|
|
Suse works differently than GNOME here; we set a default keyboard from
|
|
the system's configuration instead of letting GNOME take care of
|
|
everything itself.
|
|
|
|
https://bugzilla.suse.com/show_bug.cgi?id=979051
|
|
---
|
|
plugins/keyboard/gsd-keyboard-manager.c | 18 +++++++++++++-----
|
|
1 file changed, 13 insertions(+), 5 deletions(-)
|
|
|
|
Index: b/plugins/keyboard/gsd-keyboard-manager.c
|
|
===================================================================
|
|
--- a/plugins/keyboard/gsd-keyboard-manager.c
|
|
+++ b/plugins/keyboard/gsd-keyboard-manager.c
|
|
@@ -207,7 +207,7 @@ settings_changed (GSettings *se
|
|
}
|
|
|
|
static void
|
|
-get_sources_from_xkb_config (GsdKeyboardManager *manager)
|
|
+get_sources_from_xkb_config (GsdKeyboardManager *manager, gboolean running_under_gdm)
|
|
{
|
|
GVariantBuilder builder;
|
|
GVariant *v;
|
|
@@ -225,7 +225,7 @@ get_sources_from_xkb_config (GsdKeyboard
|
|
|
|
init_builder_with_sources (&builder, manager->input_sources_settings);
|
|
|
|
- if (!layouts) {
|
|
+ if (!layouts && running_under_gdm) {
|
|
g_variant_builder_add (&builder, "(ss)", INPUT_SOURCE_TYPE_XKB, DEFAULT_LAYOUT);
|
|
goto out;
|
|
}
|
|
@@ -404,15 +404,23 @@ maybe_create_initial_settings (GsdKeyboa
|
|
|
|
settings = manager->input_sources_settings;
|
|
|
|
- if (g_getenv ("RUNNING_UNDER_GDM"))
|
|
- return;
|
|
+ if (g_getenv ("RUNNING_UNDER_GDM")) {
|
|
+ GVariantBuilder builder;
|
|
+ /* clean the settings and get them from the "system" */
|
|
+ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(ss)"));
|
|
+ g_settings_set_value (settings, KEY_INPUT_SOURCES, g_variant_builder_end (&builder));
|
|
+ get_sources_from_xkb_config (manager, TRUE);
|
|
+
|
|
+ g_settings_set_strv (settings, KEY_KEYBOARD_OPTIONS, NULL);
|
|
+ get_options_from_xkb_config (manager);
|
|
+ }
|
|
|
|
maybe_convert_old_settings (settings);
|
|
|
|
/* if we still don't have anything do some educated guesses */
|
|
sources = g_settings_get_value (settings, KEY_INPUT_SOURCES);
|
|
if (g_variant_n_children (sources) < 1)
|
|
- get_sources_from_xkb_config (manager);
|
|
+ get_sources_from_xkb_config (manager, FALSE);
|
|
g_variant_unref (sources);
|
|
|
|
options = g_settings_get_strv (settings, KEY_KEYBOARD_OPTIONS);
|