aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWilliam Hua <william.hua@canonical.com>2013-09-21 11:55:33 -0400
committerWilliam Hua <william.hua@canonical.com>2013-09-21 11:55:33 -0400
commit4c4d3fe6179b3457c63d619ee3012cfba0d4a50d (patch)
tree291ae16d9759e5ec9adea471f09884d746f1d490
parentcaa8187d0c9dd3e891b9a0ba4967fdeb901f76e9 (diff)
downloadayatana-indicator-keyboard-4c4d3fe6179b3457c63d619ee3012cfba0d4a50d.tar.gz
ayatana-indicator-keyboard-4c4d3fe6179b3457c63d619ee3012cfba0d4a50d.tar.bz2
ayatana-indicator-keyboard-4c4d3fe6179b3457c63d619ee3012cfba0d4a50d.zip
Prevent index out of bounds.
-rw-r--r--lib/main.vala10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/main.vala b/lib/main.vala
index 11802d8a..a0315590 100644
--- a/lib/main.vala
+++ b/lib/main.vala
@@ -41,6 +41,8 @@ public class Indicator.Keyboard.Service : Object {
private MenuModel? menu_model;
private Menu? sources_menu;
+ private uint lightdm_current;
+
[DBus (visible = false)]
public Service (ref unowned string[] args) {
force = "--force" in args;
@@ -112,6 +114,8 @@ public class Indicator.Keyboard.Service : Object {
[DBus (visible = false)]
private void migrate_keyboard_layouts () {
if (is_login_user ()) {
+ lightdm_current = source_settings.get_uint ("current");
+
var manager = Act.UserManager.get_default ();
if (manager.is_loaded) {
@@ -298,6 +302,12 @@ public class Indicator.Keyboard.Service : Object {
builder.add ("(ss)", "xkb", name);
}
+ if (lightdm_current < list.size) {
+ source_settings.set_uint ("current", lightdm_current);
+ } else {
+ source_settings.set_uint ("current", list.size - 1);
+ }
+
source_settings.set_value ("sources", builder.end ());
}