Merge lp:~cosmos-door/unity-settings-daemon/lp1514544-zesty into lp:unity-settings-daemon

Proposed by Mitsuya Shibata
Status: Needs review
Proposed branch: lp:~cosmos-door/unity-settings-daemon/lp1514544-zesty
Merge into: lp:unity-settings-daemon
Diff against target: 55 lines (+23/-1)
1 file modified
plugins/keyboard/gsd-keyboard-manager.c (+23/-1)
To merge this branch: bzr merge lp:~cosmos-door/unity-settings-daemon/lp1514544-zesty
Reviewer Review Type Date Requested Status
Unity Settings Daemon Development Team Pending
Review via email: mp+321005@code.launchpad.net
To post a comment you must log in.

Unmerged revisions

4161. By Mitsuya Shibata

keyboard: change default layout by locale. Fixes #1514544

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'plugins/keyboard/gsd-keyboard-manager.c'
2--- plugins/keyboard/gsd-keyboard-manager.c 2016-10-03 09:57:23 +0000
3+++ plugins/keyboard/gsd-keyboard-manager.c 2017-03-25 15:54:03 +0000
4@@ -1933,6 +1933,26 @@
5 manager->priv->device_manager = device_manager;
6 }
7
8+static const gchar *
9+get_default_layout_from_locale (void)
10+{
11+ const gchar *locale;
12+ const gchar *locale_layout[][2] = {
13+ { "ja_JP", "jp" },
14+ };
15+ gint i;
16+
17+ locale = setlocale (LC_CTYPE, NULL);
18+ if (!locale)
19+ locale = DEFAULT_LANGUAGE;
20+
21+ for (i = 0; i < G_N_ELEMENTS (locale_layout); ++i)
22+ if (g_str_has_prefix (locale, locale_layout[i][0]))
23+ return locale_layout[i][1];
24+
25+ return DEFAULT_LAYOUT;
26+}
27+
28 static void
29 get_sources_from_xkb_config (GsdKeyboardManager *manager)
30 {
31@@ -1943,6 +1963,7 @@
32 gchar **layouts = NULL;
33 gchar **variants = NULL;
34 gboolean have_default_layout = FALSE;
35+ const gchar *default_layout;
36
37 v = g_dbus_proxy_get_cached_property (priv->localed, "X11Layout");
38 if (v) {
39@@ -1970,6 +1991,7 @@
40
41 init_builder_with_sources (&builder, priv->input_sources_settings);
42
43+ default_layout = get_default_layout_from_locale();
44 for (i = 0; i < n && layouts[i][0]; ++i) {
45 gchar *id;
46
47@@ -1978,7 +2000,7 @@
48 else
49 id = g_strdup (layouts[i]);
50
51- if (g_str_equal (id, DEFAULT_LAYOUT))
52+ if (g_str_equal (id, default_layout))
53 have_default_layout = TRUE;
54
55 g_variant_builder_add (&builder, "(ss)", INPUT_SOURCE_TYPE_XKB, id);

Subscribers

People subscribed via source and target branches