[gnome-control-center] power: Make section headings accessible



commit a14e772cad832ba41c68ddaae44c3c276005c345
Author: Matthias Clasen <mclasen redhat com>
Date:   Wed Mar 25 12:13:45 2015 -0400

    power: Make section headings accessible
    
    The section headings are useful to understand the content
    of this panel. Sadly, orca does not currently read them
    at all. We can fix this by setting up accessible relations
    that help orca figure this out.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=746755

 panels/power/cc-power-panel.c |   60 ++++++++++++++++++++++++++++++-----------
 1 files changed, 44 insertions(+), 16 deletions(-)
---
diff --git a/panels/power/cc-power-panel.c b/panels/power/cc-power-panel.c
index c73a5d1..487aef4 100644
--- a/panels/power/cc-power-panel.c
+++ b/panels/power/cc-power-panel.c
@@ -1461,15 +1461,15 @@ add_power_saving_section (CcPowerPanel *self)
   vbox = WID (priv->builder, "vbox_power");
 
   s = g_strdup_printf ("<b>%s</b>", _("Power Saving"));
-  widget = gtk_label_new (s);
+  label = gtk_label_new (s);
   g_free (s);
-  gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
-  gtk_widget_set_halign (widget, GTK_ALIGN_START);
-  gtk_widget_set_margin_start (widget, 56);
-  gtk_widget_set_margin_end (widget, 56);
-  gtk_widget_set_margin_bottom (widget, 6);
-  gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, TRUE, 0);
-  gtk_widget_show (widget);
+  gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+  gtk_widget_set_halign (label, GTK_ALIGN_START);
+  gtk_widget_set_margin_start (label, 56);
+  gtk_widget_set_margin_end (label, 56);
+  gtk_widget_set_margin_bottom (label, 6);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+  gtk_widget_show (label);
 
   widget = gtk_list_box_new ();
   priv->boxes_reverse = g_list_prepend (priv->boxes_reverse, widget);
@@ -1479,6 +1479,13 @@ add_power_saving_section (CcPowerPanel *self)
                                 cc_list_box_update_header_func,
                                 NULL, NULL);
 
+  atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (label)),
+                               ATK_RELATION_LABEL_FOR,
+                               ATK_OBJECT (gtk_widget_get_accessible (widget)));
+  atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (widget)),
+                               ATK_RELATION_LABELLED_BY,
+                               ATK_OBJECT (gtk_widget_get_accessible (label)));
+
   box = gtk_frame_new (NULL);
   gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_IN);
   gtk_widget_set_margin_start (box, 50);
@@ -1838,15 +1845,15 @@ add_automatic_suspend_section (CcPowerPanel *self)
   vbox = WID (priv->builder, "vbox_power");
 
   s = g_markup_printf_escaped ("<b>%s</b>", _("Suspend & Power Off"));
-  widget = gtk_label_new (s);
+  label = gtk_label_new (s);
   g_free (s);
-  gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
-  gtk_widget_set_halign (widget, GTK_ALIGN_START);
-  gtk_widget_set_margin_start (widget, 56);
-  gtk_widget_set_margin_end (widget, 50);
-  gtk_widget_set_margin_bottom (widget, 6);
-  gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, TRUE, 0);
-  gtk_widget_show (widget);
+  gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
+  gtk_widget_set_halign (label, GTK_ALIGN_START);
+  gtk_widget_set_margin_start (label, 56);
+  gtk_widget_set_margin_end (label, 50);
+  gtk_widget_set_margin_bottom (label, 6);
+  gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, TRUE, 0);
+  gtk_widget_show (label);
 
   widget = gtk_list_box_new ();
   priv->boxes_reverse = g_list_prepend (priv->boxes_reverse, widget);
@@ -1858,6 +1865,13 @@ add_automatic_suspend_section (CcPowerPanel *self)
   g_signal_connect_swapped (widget, "row-activated",
                             G_CALLBACK (activate_row), self);
 
+  atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (label)),
+                               ATK_RELATION_LABEL_FOR,
+                               ATK_OBJECT (gtk_widget_get_accessible (widget)));
+  atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (widget)),
+                               ATK_RELATION_LABELLED_BY,
+                               ATK_OBJECT (gtk_widget_get_accessible (label)));
+
   box = gtk_frame_new (NULL);
   gtk_frame_set_shadow_type (GTK_FRAME (box), GTK_SHADOW_IN);
   gtk_widget_set_margin_start (box, 50);
@@ -2059,6 +2073,13 @@ add_battery_section (CcPowerPanel *self)
   gtk_list_box_set_sort_func (GTK_LIST_BOX (widget),
                               (GtkListBoxSortFunc)battery_sort_func, NULL, NULL);
 
+  atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (priv->battery_heading)),
+                               ATK_RELATION_LABEL_FOR,
+                               ATK_OBJECT (gtk_widget_get_accessible (priv->battery_list)));
+  atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (priv->battery_list)),
+                               ATK_RELATION_LABELLED_BY,
+                               ATK_OBJECT (gtk_widget_get_accessible (priv->battery_heading)));
+
   frame = gtk_frame_new (NULL);
   gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
   gtk_container_add (GTK_CONTAINER (frame), widget);
@@ -2105,6 +2126,13 @@ add_device_section (CcPowerPanel *self)
   gtk_list_box_set_sort_func (GTK_LIST_BOX (widget),
                               (GtkListBoxSortFunc)battery_sort_func, NULL, NULL);
 
+  atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (priv->device_heading)),
+                               ATK_RELATION_LABEL_FOR,
+                               ATK_OBJECT (gtk_widget_get_accessible (priv->device_list)));
+  atk_object_add_relationship (ATK_OBJECT (gtk_widget_get_accessible (priv->device_list)),
+                               ATK_RELATION_LABELLED_BY,
+                               ATK_OBJECT (gtk_widget_get_accessible (priv->device_heading)));
+
   frame = gtk_frame_new (NULL);
   gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN);
   gtk_container_add (GTK_CONTAINER (frame), widget);


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