[gnome-shell] a11y: add the possibility to set the accessible object of a widget
- From: Alejandro Piñeiro Iglesias <apinheiro src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] a11y: add the possibility to set the accessible object of a widget
- Date: Wed, 28 Aug 2013 14:07:07 +0000 (UTC)
commit bd28d5c48af87e34c99cf20cc18c409cca1a1080
Author: Alejandro Piñeiro <apinheiro igalia com>
Date: Thu Aug 22 20:01:53 2013 +0200
a11y: add the possibility to set the accessible object of a widget
In the common case, the accessible object is created by the
own widget. In some cases it is needed to specify a custom
accessible, as some of the logic will be implemented on the
javascript code (extend functionality using Components vs Hierarchy).
https://bugzilla.gnome.org/show_bug.cgi?id=648623
src/st/st-widget.c | 37 +++++++++++++++++++++++++++++++++++++
src/st/st-widget.h | 3 ++-
2 files changed, 39 insertions(+), 1 deletions(-)
---
diff --git a/src/st/st-widget.c b/src/st/st-widget.c
index 1fdbc52..f78b19d 100644
--- a/src/st/st-widget.c
+++ b/src/st/st-widget.c
@@ -2582,6 +2582,43 @@ st_widget_get_accessible (ClutterActor *actor)
return widget->priv->accessible;
}
+/**
+ * st_widget_set_accessible:
+ * @widget: A #StWidget
+ * @accessible: an accessible (#AtkObject)
+ *
+ * This method allows to set a customly created accessible object to
+ * this widget. For example if you define a new subclass of
+ * #StWidgetAccessible at the javascript code.
+ *
+ * NULL is a valid value for @accessible. That contemplates the
+ * hypothetical case of not needing anymore a custom accessible object
+ * for the widget. Next call of st_widget_get_accessible() would
+ * create and return a default accessible.
+ *
+ * It assumes that the call to atk_object_initialize that bound the
+ * gobject with the custom accessible object was already called, so
+ * not a responsibility of this method.
+ *
+ */
+void
+st_widget_set_accessible (StWidget *widget,
+ AtkObject *accessible)
+{
+ g_return_if_fail (ST_IS_WIDGET (widget));
+
+ if (widget->priv->accessible != accessible)
+ {
+ if (widget->priv->accessible)
+ g_object_unref (widget->priv->accessible);
+
+ if (accessible)
+ widget->priv->accessible = g_object_ref (accessible);
+ else
+ widget->priv->accessible = NULL;
+ }
+}
+
static const gchar *
st_widget_accessible_get_name (AtkObject *obj)
{
diff --git a/src/st/st-widget.h b/src/st/st-widget.h
index 1b207f4..424f049 100644
--- a/src/st/st-widget.h
+++ b/src/st/st-widget.h
@@ -167,7 +167,8 @@ void st_widget_remove_accessible_state (StWidget *widget,
void st_widget_set_accessible_name (StWidget *widget,
const gchar *name);
const gchar * st_widget_get_accessible_name (StWidget *widget);
-
+void st_widget_set_accessible (StWidget *widget,
+ AtkObject *accessible);
/* utility methods */
void st_get_align_factors (StAlign x_align,
StAlign y_align,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]