[gnome-shell] status/keyboard: implement remaining property types
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] status/keyboard: implement remaining property types
- Date: Thu, 13 Dec 2012 23:50:16 +0000 (UTC)
commit bc6b4b01ea37687604c39b62d2467676f5ee665a
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Sat Nov 24 15:56:06 2012 +0100
status/keyboard: implement remaining property types
Input methods other than Anthy need different property types, so we
should support all those exposed by the IBus protocol.
https://bugzilla.gnome.org/show_bug.cgi?id=682318
js/ui/status/keyboard.js | 42 ++++++++++++++++++++++++++++++++++++++----
1 files changed, 38 insertions(+), 4 deletions(-)
---
diff --git a/js/ui/status/keyboard.js b/js/ui/status/keyboard.js
index f12c787..cf036ac 100644
--- a/js/ui/status/keyboard.js
+++ b/js/ui/status/keyboard.js
@@ -484,11 +484,13 @@ const InputSourceIndicator = new Lang.Class({
}
let item;
- let type = prop.get_prop_type();
- if (type == IBus.PropType.MENU) {
+ switch (prop.get_prop_type()) {
+ case IBus.PropType.MENU:
item = new PopupMenu.PopupSubMenuMenuItem(prop.get_label().get_text());
this._buildPropSubMenu(item.menu, prop.get_sub_props());
- } else if (type == IBus.PropType.RADIO) {
+ break;
+
+ case IBus.PropType.RADIO:
item = new PopupMenu.PopupMenuItem(prop.get_label().get_text());
item.prop = prop;
radioGroup.push(item);
@@ -513,7 +515,39 @@ const InputSourceIndicator = new Lang.Class({
}
}
}));
- } else {
+ break;
+
+ case IBus.PropType.TOGGLE:
+ item = new PopupMenu.PopupSwitchMenuItem(prop.get_label().get_text(), prop.get_state() == IBus.PropState.CHECKED);
+ item.prop = prop;
+ item.connect('toggled', Lang.bind(this, function() {
+ if (item.state) {
+ item.prop.set_state(IBus.PropState.CHECKED);
+ this._ibusManager.activateProperty(item.prop.get_key(),
+ IBus.PropState.CHECKED);
+ } else {
+ item.prop.set_state(IBus.PropState.UNCHECKED);
+ this._ibusManager.activateProperty(item.prop.get_key(),
+ IBus.PropState.UNCHECKED);
+ }
+ }));
+ break;
+
+ case IBus.PropType.NORMAL:
+ item = new PopupMenu.PopupMenuItem(prop.get_label().get_text());
+ item.prop = prop;
+ item.connect('activate', Lang.bind(this, function() {
+ this._ibusManager.activateProperty(item.prop.get_key(),
+ IBus.PropState.CHECKED);
+ }));
+ break;
+
+ case IBus.PropType.SEPARATOR:
+ item = new PopupMenu.PopupSeparatorMenuItem();
+ break;
+
+ default:
+ log ('IBus property %s has invalid type %d'.format(prop.get_key(), type));
continue;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]