]> Pileus Git - ~andy/gtk/commitdiff
NotebookPageAccessible: Implement selectable/selected states
authorMatthias Clasen <mclasen@redhat.com>
Tue, 18 Dec 2012 04:59:23 +0000 (23:59 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 18 Dec 2012 04:59:23 +0000 (23:59 -0500)
The automatic handling for this was removed from atk, so
we need to do it ourselves here.

gtk/a11y/gtknotebookpageaccessible.c

index 8346c0ee66cf21d80465db6d0eedf743312a5420..49f4797fc881ddda4c710adf00617b84a8d7ae18 100644 (file)
@@ -140,12 +140,21 @@ gtk_notebook_page_accessible_ref_child (AtkObject *accessible,
 static AtkStateSet *
 gtk_notebook_page_accessible_ref_state_set (AtkObject *accessible)
 {
+  GtkNotebookPageAccessible *page = GTK_NOTEBOOK_PAGE_ACCESSIBLE (accessible);
   AtkStateSet *state_set, *label_state_set, *merged_state_set;
   AtkObject *atk_label;
   GtkWidget *label;
+  AtkObject *selected;
 
   state_set = ATK_OBJECT_CLASS (_gtk_notebook_page_accessible_parent_class)->ref_state_set (accessible);
 
+  atk_state_set_add_state (state_set, ATK_STATE_SELECTABLE);
+
+  selected = atk_selection_ref_selection (ATK_SELECTION (page->priv->notebook), 0);
+  if (selected == accessible)
+    atk_state_set_add_state (state_set, ATK_STATE_SELECTED);
+  g_object_unref (selected);
+
   label = get_label_from_notebook_page (GTK_NOTEBOOK_PAGE_ACCESSIBLE (accessible));
   if (label)
     {