diff options
author | Benjamin Otte <otte@redhat.com> | 2014-03-24 15:51:38 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2014-03-24 16:38:18 +0100 |
commit | 8374a586235ef356186f309607475fb33aca636b (patch) | |
tree | de42b9ec160c7490eadf365ad49f9d4fa29c6491 /gtk/a11y | |
parent | fef14e0e87d226f7b73d35d548250effcef238ff (diff) | |
download | gtk+-8374a586235ef356186f309607475fb33aca636b.tar.gz |
a11y: Add API to update relationsets of cells to their parents
Diffstat (limited to 'gtk/a11y')
-rw-r--r-- | gtk/a11y/gtkcellaccessible.c | 22 | ||||
-rw-r--r-- | gtk/a11y/gtkcellaccessibleparent.c | 17 | ||||
-rw-r--r-- | gtk/a11y/gtkcellaccessibleparent.h | 8 |
3 files changed, 47 insertions, 0 deletions
diff --git a/gtk/a11y/gtkcellaccessible.c b/gtk/a11y/gtkcellaccessible.c index 051abecec2..11775e4849 100644 --- a/gtk/a11y/gtkcellaccessible.c +++ b/gtk/a11y/gtkcellaccessible.c @@ -70,6 +70,27 @@ gtk_cell_accessible_get_index_in_parent (AtkObject *obj) return gtk_cell_accessible_parent_get_child_index (GTK_CELL_ACCESSIBLE_PARENT (cell->priv->parent), cell); } +static AtkRelationSet * +gtk_cell_accessible_ref_relation_set (AtkObject *object) +{ + GtkCellAccessible *cell; + AtkRelationSet *relationset; + AtkObject *parent; + + relationset = ATK_OBJECT_CLASS (gtk_cell_accessible_parent_class)->ref_relation_set (object); + if (relationset == NULL) + relationset = atk_relation_set_new (); + + cell = GTK_CELL_ACCESSIBLE (object); + parent = gtk_widget_get_accessible (gtk_accessible_get_widget (GTK_ACCESSIBLE (cell))); + + gtk_cell_accessible_parent_update_relationset (GTK_CELL_ACCESSIBLE_PARENT (parent), + cell, + relationset); + + return relationset; +} + static AtkStateSet * gtk_cell_accessible_ref_state_set (AtkObject *accessible) { @@ -130,6 +151,7 @@ gtk_cell_accessible_class_init (GtkCellAccessibleClass *klass) class->get_index_in_parent = gtk_cell_accessible_get_index_in_parent; class->ref_state_set = gtk_cell_accessible_ref_state_set; + class->ref_relation_set = gtk_cell_accessible_ref_relation_set; class->get_parent = gtk_cell_accessible_get_parent; } diff --git a/gtk/a11y/gtkcellaccessibleparent.c b/gtk/a11y/gtkcellaccessibleparent.c index 821828cadd..e70191531f 100644 --- a/gtk/a11y/gtkcellaccessibleparent.c +++ b/gtk/a11y/gtkcellaccessibleparent.c @@ -170,3 +170,20 @@ gtk_cell_accessible_parent_edit (GtkCellAccessibleParent *parent, if (iface->edit) (iface->edit) (parent, cell); } + +void +gtk_cell_accessible_parent_update_relationset (GtkCellAccessibleParent *parent, + GtkCellAccessible *cell, + AtkRelationSet *relationset) +{ + GtkCellAccessibleParentIface *iface; + + g_return_if_fail (GTK_IS_CELL_ACCESSIBLE_PARENT (parent)); + g_return_if_fail (GTK_IS_CELL_ACCESSIBLE (cell)); + g_return_if_fail (ATK_IS_RELATION_SET (relationset)); + + iface = GTK_CELL_ACCESSIBLE_PARENT_GET_IFACE (parent); + + if (iface->update_relationset) + (iface->update_relationset) (parent, cell, relationset); +} diff --git a/gtk/a11y/gtkcellaccessibleparent.h b/gtk/a11y/gtkcellaccessibleparent.h index 5528f75aee..b928e733d9 100644 --- a/gtk/a11y/gtkcellaccessibleparent.h +++ b/gtk/a11y/gtkcellaccessibleparent.h @@ -71,6 +71,10 @@ struct _GtkCellAccessibleParentIface GtkCellAccessible *cell); void ( *edit) (GtkCellAccessibleParent *parent, GtkCellAccessible *cell); + /* end of actions */ + void ( *update_relationset) (GtkCellAccessibleParent *parent, + GtkCellAccessible *cell, + AtkRelationSet *relationset); }; GDK_AVAILABLE_IN_ALL @@ -107,6 +111,10 @@ void gtk_cell_accessible_parent_activate (GtkCellAccessibleParent *p GDK_AVAILABLE_IN_ALL void gtk_cell_accessible_parent_edit (GtkCellAccessibleParent *parent, GtkCellAccessible *cell); +GDK_AVAILABLE_IN_3_12 +void gtk_cell_accessible_parent_update_relationset (GtkCellAccessibleParent *parent, + GtkCellAccessible *cell, + AtkRelationSet *relationset); G_END_DECLS |