aboutsummaryrefslogtreecommitdiff
path: root/lib/main.vala
diff options
context:
space:
mode:
Diffstat (limited to 'lib/main.vala')
-rw-r--r--lib/main.vala30
1 files changed, 21 insertions, 9 deletions
diff --git a/lib/main.vala b/lib/main.vala
index b9560459..d0986d03 100644
--- a/lib/main.vala
+++ b/lib/main.vala
@@ -259,16 +259,10 @@ public class Indicator.Keyboard.Service : Object {
array.get_child (index, "(ss)", out type, out name);
if (type == "xkb") {
- string display_name;
- string layout_name;
-
- this.xkb_info.get_layout_info (name, out display_name, null, out layout_name, null);
-
- if (display_name == null) {
- display_name = get_display_name (layout_name);
- }
+ string short_name;
- this.icon_strings[index] = get_abbreviation (display_name);
+ this.xkb_info.get_layout_info (name, null, out short_name, null, null);
+ this.icon_strings[index] = get_abbreviation (short_name);
icon_string = this.icon_strings[index];
}
}
@@ -504,6 +498,24 @@ public class Indicator.Keyboard.Service : Object {
}
[DBus (visible = false)]
+ private string get_display_name (string layout) {
+ var language = Xkl.get_language_name (layout);
+ var country = Xkl.get_country_name (layout);
+ var has_language = language != null && language.get_char () != '\0';
+ var has_country = country != null && country.get_char () != '\0';
+
+ if (has_language && has_country) {
+ return @"$language ($country)";
+ } else if (has_language) {
+ return language;
+ } else if (has_country) {
+ return country;
+ } else {
+ return "";
+ }
+ }
+
+ [DBus (visible = false)]
private void update_sources_menu () {
if (this.sources_menu != null) {
var menu = get_sources_menu ();