summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2014-03-24 15:51:38 +0100
committerBenjamin Otte <otte@redhat.com>2014-03-24 16:38:18 +0100
commit8374a586235ef356186f309607475fb33aca636b (patch)
treede42b9ec160c7490eadf365ad49f9d4fa29c6491
parentfef14e0e87d226f7b73d35d548250effcef238ff (diff)
downloadgtk+-8374a586235ef356186f309607475fb33aca636b.tar.gz
a11y: Add API to update relationsets of cells to their parents
-rw-r--r--gtk/a11y/gtkcellaccessible.c22
-rw-r--r--gtk/a11y/gtkcellaccessibleparent.c17
-rw-r--r--gtk/a11y/gtkcellaccessibleparent.h8
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