jackdanielz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=610ced049e1b322b3023932e68ebda74ec786e33

commit 610ced049e1b322b3023932e68ebda74ec786e33
Author: Daniel Zaoui <daniel.za...@samsung.com>
Date:   Thu Mar 27 13:17:39 2014 +0200

    Eolian: Integration of Widget Access Object
---
 src/lib/Makefile.am                      |  10 ++-
 src/lib/elm_atspi_object.c               | 105 +++++++++----------------------
 src/lib/elm_atspi_object_eo.h            |   3 +
 src/lib/elm_interface_atspi_component.eo |   4 +-
 src/lib/elm_widget_access_object.eo      |  14 +++++
 5 files changed, 56 insertions(+), 80 deletions(-)

diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 606ebcb..c0307b3 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -662,7 +662,9 @@ BUILT_SOURCES = \
                elm_video.eo.c \
                elm_video.eo.h \
                elm_web.eo.c \
-               elm_web.eo.h
+               elm_web.eo.h \
+               elm_widget_access_object.eo.c \
+               elm_widget_access_object.eo.h
 
 EXTRA_DIST += \
             elm_widget.eo \
@@ -733,7 +735,8 @@ EXTRA_DIST += \
             elm_thumb.eo \
             elm_toolbar.eo \
             elm_video.eo \
-            elm_web.eo
+            elm_web.eo \
+            elm_widget_access_object.eo
 
 nodist_includesunstable_HEADERS = \
                                  elm_widget.eo.h \
@@ -804,5 +807,6 @@ nodist_includesunstable_HEADERS = \
                                  elm_thumb.eo.h \
                                  elm_toolbar.eo.h \
                                  elm_video.eo.h \
-                                 elm_web.eo.h
+                                 elm_web.eo.h \
+                                 elm_widget_access_object.eo.h
 
diff --git a/src/lib/elm_atspi_object.c b/src/lib/elm_atspi_object.c
index 75ca067..a5d6d94 100644
--- a/src/lib/elm_atspi_object.c
+++ b/src/lib/elm_atspi_object.c
@@ -413,11 +413,11 @@ _emit_atspi_state_changed_unfocused_event(void *data, 
Evas_Object *eo EINA_UNUSE
    eo_do(ao, eo_event_callback_call(ELM_ATSPI_OBJECT_EVENT_STATE_CHANGED, 
&evdata[0], NULL));
 }
 
-static void
-_widget_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_widget_access_object_eo_base_constructor(Eo *obj, void *_pd EINA_UNUSED)
 {
    Evas_Object *internal_obj = NULL;
-   eo_do_super(obj, ELM_ATSPI_WIDGET_CLASS, eo_constructor());
+   eo_do_super(obj, ELM_WIDGET_ACCESS_OBJECT_CLASS, eo_constructor());
 
    eo_do(obj, eo_parent_get(&internal_obj));
 
@@ -428,27 +428,23 @@ _widget_constructor(Eo *obj, void *_pd EINA_UNUSED, 
va_list *list EINA_UNUSED)
    evas_object_smart_callback_add(internal_obj, "unfocused", 
_emit_atspi_state_changed_unfocused_event, obj);
 }
 
-static void
-_widget_name_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static const char*
+_elm_widget_access_object_elm_atspi_object_name_get(Eo *obj, void *_pd 
EINA_UNUSED)
 {
-   EO_PARAMETER_GET(const char **, ret, list);
    Evas_Object *widget = NULL;
-   const char *name = NULL;
 
    eo_do(obj, elm_atspi_obj_object_get(&widget));
-   name = elm_object_text_get(widget);
-   if (ret) *ret = name;
+   return elm_object_text_get(widget);
 }
 
-static void
-_widget_role_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static AtspiRole
+_elm_widget_access_object_elm_atspi_object_role_get(Eo *obj, void *_pd 
EINA_UNUSED)
 {
-   EO_PARAMETER_GET(AtspiRole*, ret, list);
    const char *type;
    AtspiRole role;
    Evas_Object *widget = NULL;
    eo_do(obj, elm_atspi_obj_object_get(&widget));
-   if (!widget) return;
+   if (!widget) return ATSPI_ROLE_INVALID;
    type = evas_object_type_get(widget);
 
    // FIXME make it hash or cast some first bytes to int.
@@ -459,31 +455,26 @@ _widget_role_get(Eo *obj, void *_pd EINA_UNUSED, va_list 
*list)
    else
      role = ATSPI_ROLE_UNKNOWN;
 
-   if (ret) *ret = role;
+   return role;
 }
 
-static void
-_widget_parent_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Elm_Atspi_Object*
+_elm_widget_access_object_elm_atspi_object_parent_get(Eo *obj, void *_pd 
EINA_UNUSED)
 {
-   EO_PARAMETER_GET(Elm_Atspi_Object **, ret, list);
    Evas_Object *widget = NULL;
-   Elm_Atspi_Object *parent;
 
    eo_do(obj, elm_atspi_obj_object_get(&widget));
    widget = elm_object_parent_widget_get(widget);
 
    if (widget)
-     parent = _elm_atspi_factory_construct(widget);
+     return _elm_atspi_factory_construct(widget);
    else // if parent is not found, attach it to atspi root object.
-     parent = _elm_atspi_root_object_get();
-
-   if (ret) *ret = parent;
+     return _elm_atspi_root_object_get();
 }
 
-static void
-_widget_children_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_List*
+_elm_widget_access_object_elm_atspi_object_children_get(Eo *obj, void *_pd 
EINA_UNUSED)
 {
-   EO_PARAMETER_GET(Eina_List **, ret, list);
    Evas_Object *widget = NULL;
    Eina_List *l, *accs = NULL;
    Elm_Widget_Smart_Data *sd;
@@ -492,7 +483,7 @@ _widget_children_get(Eo *obj, void *_pd EINA_UNUSED, 
va_list *list)
    eo_do(obj, elm_atspi_obj_object_get(&widget));
 
    sd = eo_data_scope_get(widget, ELM_OBJ_WIDGET_CLASS);
-   if (!sd) return;
+   if (!sd) return NULL;
 
    EINA_LIST_FOREACH(sd->subobjs, l, widget)
      {
@@ -501,21 +492,17 @@ _widget_children_get(Eo *obj, void *_pd EINA_UNUSED, 
va_list *list)
         if (aobj)
           accs = eina_list_append(accs, aobj);
      }
-   if (ret)
-     *ret = accs;
-   else
-     eina_list_free(accs);
+   return accs;
 }
 
-static void
-_widget_state_get(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Elm_Atspi_State
+_elm_widget_access_object_elm_atspi_object_state_get(Eo *obj, void *_pd 
EINA_UNUSED)
 {
-   EO_PARAMETER_GET(Elm_Atspi_State *, ret, list);
    Evas_Object *widget;
    Elm_Atspi_State states;
    eo_do(obj, elm_atspi_obj_object_get(&widget));
 
-   eo_do_super(obj, ELM_ATSPI_WIDGET_CLASS, elm_atspi_obj_state_get(&states));
+   eo_do_super(obj, ELM_WIDGET_ACCESS_OBJECT_CLASS, 
elm_atspi_obj_state_get(&states));
 
    if (elm_object_focus_get(widget))
      BIT_FLAG_SET(states, ATSPI_STATE_FOCUSED);
@@ -524,58 +511,28 @@ _widget_state_get(Eo *obj, void *_pd EINA_UNUSED, va_list 
*list)
    if (!elm_object_disabled_get(widget))
      BIT_FLAG_SET(states, ATSPI_STATE_ENABLED);
 
-   if (ret) *ret = states;
+   return states;
 }
 
-static void
-_widget_comp_focus_grab(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_widget_access_object_elm_interface_atspi_component_focus_grab(Eo *obj, 
void *_pd EINA_UNUSED)
 {
-   EO_PARAMETER_GET(Eina_Bool*, ret, list);
    Evas_Object *evobj = NULL;
-   if (ret) *ret = EINA_FALSE;
 
    eo_do(obj, elm_atspi_obj_object_get(&evobj));
-   EINA_SAFETY_ON_NULL_RETURN(evobj);
+   EINA_SAFETY_ON_NULL_RETURN_VAL(evobj, EINA_FALSE);
    if (elm_object_focus_allow_get(evobj))
      {
        Ecore_Evas *ee = ecore_evas_ecore_evas_get(evas_object_evas_get(evobj));
-          if (!ee) return;
+       if (!ee) return EINA_FALSE;
        ecore_evas_activate(ee);
        elm_object_focus_set(evobj, EINA_TRUE);
-       if (ret) *ret = EINA_TRUE;
+       return EINA_TRUE;
      }
+   return EINA_FALSE;
 }
 
-static void
-_widget_class_constructor(Eo_Class *klass)
-{
-   const Eo_Op_Func_Description func_desc[] = {
-        EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), 
_widget_constructor),
-        EO_OP_FUNC(ELM_ATSPI_OBJ_ID(ELM_ATSPI_OBJ_SUB_ID_NAME_GET), 
_widget_name_get),
-        EO_OP_FUNC(ELM_ATSPI_OBJ_ID(ELM_ATSPI_OBJ_SUB_ID_ROLE_GET), 
_widget_role_get),
-        EO_OP_FUNC(ELM_ATSPI_OBJ_ID(ELM_ATSPI_OBJ_SUB_ID_PARENT_GET), 
_widget_parent_get),
-        EO_OP_FUNC(ELM_ATSPI_OBJ_ID(ELM_ATSPI_OBJ_SUB_ID_CHILDREN_GET), 
_widget_children_get),
-        EO_OP_FUNC(ELM_ATSPI_OBJ_ID(ELM_ATSPI_OBJ_SUB_ID_STATE_GET), 
_widget_state_get),
-        
EO_OP_FUNC(ELM_INTERFACE_ATSPI_COMPONENT_ID(ELM_INTERFACE_ATSPI_COMPONENT_SUB_ID_FOCUS_GRAB),
 _widget_comp_focus_grab),
-        EO_OP_FUNC_SENTINEL
-   };
-   eo_class_funcs_set(klass, func_desc);
-}
-
-static const Eo_Class_Description widget_class_desc = {
-     EO_VERSION,
-     "Elm_Widget_Access_Object",
-     EO_CLASS_TYPE_REGULAR,
-     EO_CLASS_DESCRIPTION_OPS(NULL, NULL, 0),
-     NULL,
-     0,
-     _widget_class_constructor,
-     NULL
-};
-
-EO_DEFINE_CLASS(elm_atspi_widget_obj_class_get, &widget_class_desc, 
ELM_ATSPI_OBJ_CLASS, NULL);
-
-
+#include "elm_widget_access_object.eo.c"
 /// Elm_Atspi_App base class
 #define ELM_ATSPI_APP_CLASS elm_atspi_app_obj_class_get()
 
@@ -739,7 +696,7 @@ static const Eo_Class_Description win_class_desc = {
      NULL
 };
 
-EO_DEFINE_CLASS(elm_atspi_win_obj_class_get, &win_class_desc, 
ELM_ATSPI_WIDGET_CLASS, ELM_INTERFACE_ATSPI_WINDOW_CLASS, NULL);
+EO_DEFINE_CLASS(elm_atspi_win_obj_class_get, &win_class_desc, 
ELM_WIDGET_ACCESS_OBJECT_CLASS, ELM_INTERFACE_ATSPI_WINDOW_CLASS, NULL);
 
 Elm_Atspi_Object*
 _elm_atspi_root_object_get(void)
@@ -774,7 +731,7 @@ _elm_atspi_factory_construct(Evas_Object *obj)
    else if (!strcmp(type, "elm_win"))
      ret = eo_add(ELM_ATSPI_WIN_CLASS, obj);
    else if (!strncmp(type, "elm_", 4)) // defaults to implementation for 
elm_widget class.
-     ret = eo_add(ELM_ATSPI_WIDGET_CLASS, obj);
+     ret = eo_add(ELM_WIDGET_ACCESS_OBJECT_CLASS, obj);
 
    if (ret) eo_unref(ret); // only evas_object should hold reference to atspi 
object
 
diff --git a/src/lib/elm_atspi_object_eo.h b/src/lib/elm_atspi_object_eo.h
index e41f226..38f2a3a 100644
--- a/src/lib/elm_atspi_object_eo.h
+++ b/src/lib/elm_atspi_object_eo.h
@@ -1,8 +1,11 @@
 void _elm_atspi_object_global_callback_add(Eo_Event_Cb cv, void *user_data);
 void _elm_atspi_object_global_callback_del(Eo_Event_Cb cv);
 
+#include "elm_widget_access_object.eo.h"
+#if 0
 #define ELM_ATSPI_WIDGET_CLASS elm_atspi_widget_obj_class_get()
 const Eo_Class *elm_atspi_widget_obj_class_get(void) EINA_CONST;
+#endif
 
 #include "elm_atspi_object.eo.h"
 #if 0
diff --git a/src/lib/elm_interface_atspi_component.eo 
b/src/lib/elm_interface_atspi_component.eo
index 2ea9d2d..bf22a0b 100644
--- a/src/lib/elm_interface_atspi_component.eo
+++ b/src/lib/elm_interface_atspi_component.eo
@@ -74,9 +74,7 @@ mixin Elm_Interface_Atspi_Component ()
       }
       focus_grab {
          legacy null;
-         params {
-            @out Eina_Bool ret;
-         }
+         return Eina_Bool;
       }
       accessible_at_point_get {
          legacy null;
diff --git a/src/lib/elm_widget_access_object.eo 
b/src/lib/elm_widget_access_object.eo
new file mode 100644
index 0000000..528f39a
--- /dev/null
+++ b/src/lib/elm_widget_access_object.eo
@@ -0,0 +1,14 @@
+class Elm_Widget_Access_Object (Elm_Atspi_Object)
+{
+   data:null;
+   implements {
+      Eo_Base::constructor;
+      Elm_Interface_Atspi_Component::focus_grab;
+      Elm_Atspi_Object::name::get;
+      Elm_Atspi_Object::parent::get;
+      Elm_Atspi_Object::state::get;
+      Elm_Atspi_Object::role::get;
+      Elm_Atspi_Object::children::get;
+   }
+
+}

-- 


Reply via email to