[gnome-shell] calendar: Improve the accessibility of the "Do Not Disturb" switch



commit 454e3fd39a5ee24ab52dcaefc74e43e337c3c9b7
Author: Luke Yelavich <themuso themuso com>
Date:   Sat Mar 28 14:56:23 2020 +1100

    calendar: Improve the accessibility of the "Do Not Disturb" switch
    
    Set the do not disturb label as the label actor for the do not disturb switch,
    so that Orca speaks the do not disturb label when the user moves
    keyboard focus to the do not disturb switch.
    
    Also enable toggle mode for the "Do Not Disturb" button and bind it's checked
    state to the state property of the switch. This makes sure that Orca presents
    thecorrect state of the do not disturb switch to the user.
    
    Fixes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2508

 js/ui/calendar.js | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/js/ui/calendar.js b/js/ui/calendar.js
index 5b2e947732..9964184176 100644
--- a/js/ui/calendar.js
+++ b/js/ui/calendar.js
@@ -1153,17 +1153,22 @@ class CalendarMessageList extends St.Widget {
         let hbox = new St.BoxLayout({ style_class: 'message-list-controls' });
         box.add_child(hbox);
 
-        hbox.add_child(new St.Label({
+        const dndLabel = new St.Label({
             text: _('Do Not Disturb'),
             y_align: Clutter.ActorAlign.CENTER,
-        }));
+        });
+        hbox.add_child(dndLabel);
 
         this._dndSwitch = new DoNotDisturbSwitch();
         this._dndButton = new St.Button({
             can_focus: true,
+            toggle_mode: true,
             child: this._dndSwitch,
+            label_actor: dndLabel,
         });
-        this._dndButton.connect('clicked', () => this._dndSwitch.toggle());
+        this._dndButton.bind_property('checked',
+            this._dndSwitch, 'state',
+            GObject.BindingFlags.BIDIRECTIONAL | GObject.BindingFlags.SYNC_CREATE);
         hbox.add_child(this._dndButton);
 
         this._clearButton = new St.Button({


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