diff options
author | Benjamin Otte <otte@redhat.com> | 2011-12-15 18:17:06 +0100 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2011-12-16 04:53:16 +0100 |
commit | 0470b91add2fc3fc38b77886a39e2d9ffe18b603 (patch) | |
tree | 0f0c2bb28c8cb228df0c7c8db0153d981a481b16 | |
parent | acb73f99bbb0abe3c9d2a099a7311113417f7a58 (diff) | |
download | gtk+-0470b91add2fc3fc38b77886a39e2d9ffe18b603.tar.gz |
cellrenderer: Add API to keep the accessible type
It's private for now, because we require a GType that isn't exported in
the API yet.
-rw-r--r-- | gtk/gtkcellrenderer.c | 40 | ||||
-rw-r--r-- | gtk/gtkcellrenderer.h | 6 |
2 files changed, 46 insertions, 0 deletions
diff --git a/gtk/gtkcellrenderer.c b/gtk/gtkcellrenderer.c index 9fa3d8849e..609c4a2923 100644 --- a/gtk/gtkcellrenderer.c +++ b/gtk/gtkcellrenderer.c @@ -24,6 +24,7 @@ #include "gtktypebuiltins.h" #include "gtkprivate.h" #include "gtktreeprivate.h" +#include "a11y/gtkrenderercellaccessible.h" /** @@ -130,6 +131,7 @@ struct _GtkCellRendererPrivate struct _GtkCellRendererClassPrivate { + GType accessible_type; }; enum { @@ -416,6 +418,8 @@ gtk_cell_renderer_class_init (GtkCellRendererClass *class) P_("Whether this tag affects the cell background color")); g_type_class_add_private (class, sizeof (GtkCellRendererPrivate)); + + _gtk_cell_renderer_class_set_accessible_type (class, GTK_TYPE_RENDERER_CELL_ACCESSIBLE); } static void @@ -1759,3 +1763,39 @@ gtk_cell_renderer_get_state (GtkCellRenderer *cell, return state; } + +/* + * _gtk_cell_renderer_class_set_accessible_type: + * @renderer_class: class to set the accessible type for + * @type: The object type that implements the accessible for @widget_class. + * The type must be a subtype of #GtkRendererCellAccessible + * + * Sets the type to be used for creating accessibles for cells rendered by + * cell renderers of @renderer_class. Note that multiple accessibles will + * be created. + * + * This function should only be called from class init functions of cell + * renderers. + **/ +void +_gtk_cell_renderer_class_set_accessible_type (GtkCellRendererClass *renderer_class, + GType type) +{ + GtkCellRendererClassPrivate *priv; + + g_return_if_fail (GTK_IS_CELL_RENDERER_CLASS (renderer_class)); + g_return_if_fail (g_type_is_a (type, GTK_TYPE_RENDERER_CELL_ACCESSIBLE)); + + priv = renderer_class->priv; + + priv->accessible_type = type; +} + +GType +_gtk_cell_renderer_get_accessible_type (GtkCellRenderer *renderer) +{ + g_return_val_if_fail (GTK_IS_CELL_RENDERER (renderer), GTK_TYPE_RENDERER_CELL_ACCESSIBLE); + + return GTK_CELL_RENDERER_GET_CLASS (renderer)->priv->accessible_type; +} + diff --git a/gtk/gtkcellrenderer.h b/gtk/gtkcellrenderer.h index 44aa12c763..f27eb87c34 100644 --- a/gtk/gtkcellrenderer.h +++ b/gtk/gtkcellrenderer.h @@ -271,6 +271,12 @@ GtkStateFlags gtk_cell_renderer_get_state (GtkCellRenderer *cell, GtkWidget *widget, GtkCellRendererState cell_state); +void _gtk_cell_renderer_class_set_accessible_type + (GtkCellRendererClass *renderer_class, + GType type); +GType _gtk_cell_renderer_get_accessible_type + (GtkCellRenderer * renderer); + G_END_DECLS #endif /* __GTK_CELL_RENDERER_H__ */ |