[gnome-shell] a11y: Setting a name/label_actor for several items on the panel



commit 74dd29889121394266322a9f01976a1857b78bb1
Author: Alejandro PiÃeiro <apinheiro igalia com>
Date:   Thu Jan 5 19:00:06 2012 +0100

    a11y: Setting a name/label_actor for several items on the panel
    
    https://bugzilla.gnome.org/show_bug.cgi?id=667376

 js/ui/dateMenu.js             |    1 +
 js/ui/panel.js                |    3 ++-
 js/ui/panelMenu.js            |   24 +++++++++++++++++++++---
 js/ui/popupMenu.js            |    2 ++
 js/ui/status/accessibility.js |    2 +-
 js/ui/status/bluetooth.js     |    2 +-
 js/ui/status/network.js       |    3 ++-
 js/ui/status/power.js         |    2 +-
 js/ui/status/volume.js        |    2 +-
 js/ui/userMenu.js             |    1 +
 10 files changed, 33 insertions(+), 9 deletions(-)
---
diff --git a/js/ui/dateMenu.js b/js/ui/dateMenu.js
index d3b2309..05b4d09 100644
--- a/js/ui/dateMenu.js
+++ b/js/ui/dateMenu.js
@@ -69,6 +69,7 @@ const DateMenuButton = new Lang.Class({
 
         // Date
         this._date = new St.Label();
+        this.actor.label_actor = this._date;
         this._date.style_class = 'datemenu-date-label';
         vbox.add(this._date);
 
diff --git a/js/ui/panel.js b/js/ui/panel.js
index 3196fc1..69e75a1 100644
--- a/js/ui/panel.js
+++ b/js/ui/panel.js
@@ -237,7 +237,7 @@ const AppMenuButton = new Lang.Class({
     Extends: PanelMenu.Button,
 
     _init: function(menuManager) {
-        this.parent(0.0, true);
+        this.parent(0.0, null, true);
 
         this._startingApps = [];
 
@@ -537,6 +537,7 @@ const AppMenuButton = new Lang.Class({
         let icon = targetApp.get_faded_icon(2 * PANEL_ICON_SIZE);
 
         this._label.setText(targetApp.get_name());
+        this.setName(targetApp.get_name());
 
         this._iconBox.set_child(icon);
         this._iconBox.show();
diff --git a/js/ui/panelMenu.js b/js/ui/panelMenu.js
index 126d2cc..66f4813 100644
--- a/js/ui/panelMenu.js
+++ b/js/ui/panelMenu.js
@@ -96,7 +96,7 @@ const Button = new Lang.Class({
     Name: 'PanelMenuButton',
     Extends: ButtonBox,
 
-    _init: function(menuAlignment, dontCreateMenu) {
+    _init: function(menuAlignment, nameText, dontCreateMenu) {
         this.parent({ reactive: true,
                       can_focus: true,
                       track_hover: true });
@@ -108,6 +108,24 @@ const Button = new Lang.Class({
             this.menu = null;
         else
             this.setMenu(new PopupMenu.PopupMenu(this.actor, menuAlignment, St.Side.TOP, 0));
+
+        this.setName(nameText);
+    },
+
+    setName: function(text) {
+        if (text != null) {
+            // This is the easiest way to provide a accessible name to
+            // this widget. The label could be also used for other
+            // purposes in the future.
+            if (!this.label) {
+                this.label = new St.Label({ text: text });
+                this.actor.label_actor = this.label;
+            } else
+                this.label.text = text;
+        } else {
+            this.label = null;
+            this.actor.label_actor = null;
+        }
     },
 
     setMenu: function(menu) {
@@ -203,8 +221,8 @@ const SystemStatusButton = new Lang.Class({
     Name: 'SystemStatusButton',
     Extends: Button,
 
-    _init: function(iconName,tooltipText) {
-        this.parent(0.0);
+    _init: function(iconName, tooltipText, nameText) {
+        this.parent(0.0, nameText);
 
         this._iconActor = new St.Icon({ icon_name: iconName,
                                         icon_type: St.IconType.SYMBOLIC,
diff --git a/js/ui/popupMenu.js b/js/ui/popupMenu.js
index 1d847f8..fa6ddad 100644
--- a/js/ui/popupMenu.js
+++ b/js/ui/popupMenu.js
@@ -389,6 +389,7 @@ const PopupMenuItem = new Lang.Class({
 
         this.label = new St.Label({ text: text });
         this.addActor(this.label);
+        this.actor.label_actor = this.label
     }
 });
 
@@ -1428,6 +1429,7 @@ const PopupSubMenuMenuItem = new Lang.Class({
 
         this.label = new St.Label({ text: text });
         this.addActor(this.label);
+        this.actor.label_actor = this.label;
         this._triangle = new St.Label({ text: '\u25B8' });
         this.addActor(this._triangle, { align: St.Align.END });
 
diff --git a/js/ui/status/accessibility.js b/js/ui/status/accessibility.js
index 4173c73..bda0e01 100644
--- a/js/ui/status/accessibility.js
+++ b/js/ui/status/accessibility.js
@@ -44,7 +44,7 @@ const ATIndicator = new Lang.Class({
     Extends: PanelMenu.SystemStatusButton,
 
     _init: function() {
-        this.parent('preferences-desktop-accessibility', null);
+        this.parent('preferences-desktop-accessibility', null, _("Accessibility"));
 
         let highContrast = this._buildHCItem();
         this.menu.addMenuItem(highContrast);
diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js
index 126fd3d..34b1b18 100644
--- a/js/ui/status/bluetooth.js
+++ b/js/ui/status/bluetooth.js
@@ -28,7 +28,7 @@ const Indicator = new Lang.Class({
     Extends: PanelMenu.SystemStatusButton,
 
     _init: function() {
-        this.parent('bluetooth-disabled', null);
+        this.parent('bluetooth-disabled', null, _("Bluetooth"));
 
         this._applet = new GnomeBluetoothApplet.Applet();
 
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index a3ce9bc..f6cd8d0 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -113,6 +113,7 @@ const NMNetworkMenuItem = new Lang.Class({
         }
 
         this._label = new St.Label({ text: title });
+        this.actor.label_actor = this._label;
         this.addActor(this._label);
         this._icons = new St.BoxLayout({ style_class: 'nm-menu-item-icons' });
         this.addActor(this._icons, { align: St.Align.END });
@@ -1537,7 +1538,7 @@ const NMApplet = new Lang.Class({
     Extends: PanelMenu.SystemStatusButton,
 
     _init: function() {
-        this.parent('network-error', null);
+        this.parent('network-error', null, _("Network"));
 
         this._client = NMClient.Client.new();
 
diff --git a/js/ui/status/power.js b/js/ui/status/power.js
index a393215..60600bf 100644
--- a/js/ui/status/power.js
+++ b/js/ui/status/power.js
@@ -57,7 +57,7 @@ const Indicator = new Lang.Class({
     Extends: PanelMenu.SystemStatusButton,
 
     _init: function() {
-        this.parent('battery-missing', null);
+        this.parent('battery-missing', null, _("Battery"));
 
         this._proxy = new PowerManagerProxy(Gio.DBus.session, BUS_NAME, OBJECT_PATH);
 
diff --git a/js/ui/status/volume.js b/js/ui/status/volume.js
index fcaa069..3afe137 100644
--- a/js/ui/status/volume.js
+++ b/js/ui/status/volume.js
@@ -22,7 +22,7 @@ const Indicator = new Lang.Class({
     Extends: PanelMenu.SystemStatusButton,
 
     _init: function() {
-        this.parent('audio-volume-muted', null);
+        this.parent('audio-volume-muted', null, _("Volume"));
 
         this._control = new Gvc.MixerControl({ name: 'GNOME Shell Volume Control' });
         this._control.connect('state-changed', Lang.bind(this, this._onControlStateChanged));
diff --git a/js/ui/userMenu.js b/js/ui/userMenu.js
index e1757e3..6e3cf5d 100644
--- a/js/ui/userMenu.js
+++ b/js/ui/userMenu.js
@@ -466,6 +466,7 @@ const UserMenuButton = new Lang.Class({
             }));
 
         this._name = new St.Label();
+        this.actor.label_actor = this._name;
         box.add(this._name, { y_align: St.Align.MIDDLE, y_fill: false });
         this._userLoadedId = this._user.connect('notify::is-loaded', Lang.bind(this, this._updateUserName));
         this._userChangedId = this._user.connect('changed', Lang.bind(this, this._updateUserName));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]