summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukasz Stanislawski <l.stanislaws@samsung.com>2014-09-29 15:34:34 +0200
committerLukasz Stanislawski <l.stanislaws@samsung.com>2014-09-29 15:34:34 +0200
commitada4c082beb20cb584a8997d9cd4658605480ecf (patch)
tree71446b2716483207541e4f7110ec8fda7f8276a5
parent989b193d98ef0fb6d81adfe97faa6628b7ca699c (diff)
downloadelementary-ada4c082beb20cb584a8997d9cd4658605480ecf.tar.gz
atspi: make eo_widget_item accessible object
-rw-r--r--src/lib/elm_widget.c52
-rw-r--r--src/lib/elm_widget.h4
-rw-r--r--src/lib/elm_widget_item.eo7
3 files changed, 62 insertions, 1 deletions
diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c
index c7a7796a2..687bed7ea 100644
--- a/src/lib/elm_widget.c
+++ b/src/lib/elm_widget.c
@@ -10,6 +10,14 @@
#include "elm_interface_scrollable.h"
#include "elm_interface_atspi_widget.eo.h"
+#define ELM_INTERFACE_ATSPI_ACCESSIBLE_PROTECTED
+
+#include "elm_interface_atspi_accessible.h"
+#include "elm_interface_atspi_accessible.eo.h"
+
+#define ELM_INTERFACE_ATPSI_COMPONENT_PROTECTED
+#include "elm_interface_atspi_component.eo.h"
+
#define MY_CLASS ELM_WIDGET_CLASS
#define MY_CLASS_NAME "Elm_Widget"
@@ -4174,6 +4182,9 @@ _elm_widget_item_eo_base_destructor(Eo *eo_item, Elm_Widget_Item_Data *item)
}
eina_hash_free(item->labels);
+ if (item->description)
+ eina_stringshare_del(item->description);
+
EINA_MAGIC_SET(item, EINA_MAGIC_NONE);
eo_do_super(eo_item, ELM_WIDGET_ITEM_CLASS, eo_destructor());
@@ -4296,6 +4307,47 @@ _elm_widget_item_widget_get(Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item)
return item->widget;
}
+EOLIAN static const char*
+_elm_widget_item_elm_interface_atspi_accessible_description_get(Eo *eo_item EINA_UNUSED,
+ Elm_Widget_Item_Data *item)
+{
+ return item->description;
+}
+
+EOLIAN static void
+_elm_widget_item_elm_interface_atspi_accessible_description_set(Eo *eo_item EINA_UNUSED,
+ Elm_Widget_Item_Data *item,
+ const char *descr)
+{
+ eina_stringshare_replace(&item->description, descr);
+}
+
+EOLIAN static Elm_Atspi_Role
+_elm_widget_item_elm_interface_atspi_accessible_role_get(Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item)
+{
+ return item->role;
+}
+
+EOLIAN static void
+_elm_widget_item_elm_interface_atspi_accessible_role_set(Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item,
+ Elm_Atspi_Role role)
+{
+ item->role = role;
+}
+
+EOLIAN static Elm_Atspi_State_Set
+_elm_widget_item_elm_interface_atspi_accessible_state_set_get(Eo *eo_item EINA_UNUSED,
+ Elm_Widget_Item_Data *item EINA_UNUSED)
+{
+ Elm_Atspi_State_Set states = 0;
+
+ if (elm_object_item_focus_get(eo_item))
+ STATE_TYPE_SET(states, ELM_ATSPI_STATE_FOCUSED);
+ if (!elm_object_item_disabled_get(eo_item))
+ STATE_TYPE_SET(states, ELM_ATSPI_STATE_ENABLED);
+
+ return states;
+}
EAPI void
elm_object_item_data_set(Elm_Object_Item *it, void *data)
diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h
index 48561cec9..7659e502e 100644
--- a/src/lib/elm_widget.h
+++ b/src/lib/elm_widget.h
@@ -611,6 +611,10 @@ struct _Elm_Widget_Item_Data
Eina_Hash *labels;
Evas_Object *track_obj;
+ /**< A11Y info */
+ const char *description;
+ int role;
+
Eina_Bool disabled : 1;
Eina_Bool on_deletion : 1;
Eina_Bool on_translate : 1;
diff --git a/src/lib/elm_widget_item.eo b/src/lib/elm_widget_item.eo
index 1c6de725c..e2d1577cf 100644
--- a/src/lib/elm_widget_item.eo
+++ b/src/lib/elm_widget_item.eo
@@ -1,4 +1,4 @@
-class Elm_Widget_Item(Eo.Base)
+class Elm_Widget_Item(Eo.Base, Elm_Interface_Atspi_Accessible, Elm_Interface_Atspi_Component)
{
eo_prefix: elm_wdg_item;
legacy_prefix: elm_object_item;
@@ -726,5 +726,10 @@ class Elm_Widget_Item(Eo.Base)
implements {
Eo.Base.constructor;
Eo.Base.destructor;
+ Elm_Interface_Atspi_Accessible.description.get;
+ Elm_Interface_Atspi_Accessible.description.set;
+ Elm_Interface_Atspi_Accessible.role.get;
+ Elm_Interface_Atspi_Accessible.role.set;
+ Elm_Interface_Atspi_Accessible.state_set.get;
}
}