jackdanielz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=85fe63dd5d7c29cd5c61aab573f1551f04f9bb73

commit 85fe63dd5d7c29cd5c61aab573f1551f04f9bb73
Author: Daniel Zaoui <[email protected]>
Date:   Mon Mar 17 16:48:52 2014 +0200

    Eolian: Integration of Hover
---
 src/lib/Makefile.am        |  10 +-
 src/lib/elm_hover.c        | 311 +++++++++++++--------------------------------
 src/lib/elm_hover.eo       |  97 ++++++++++++++
 src/lib/elm_hover_eo.h     |   6 +
 src/lib/elm_widget_hover.h |   6 +-
 5 files changed, 201 insertions(+), 229 deletions(-)

diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
index 73861e5..b7c1808 100644
--- a/src/lib/Makefile.am
+++ b/src/lib/Makefile.am
@@ -535,7 +535,9 @@ BUILT_SOURCES = \
                elm_pan.eo.c \
                elm_pan.eo.h \
                elm_frame.eo.c \
-               elm_frame.eo.h
+               elm_frame.eo.h \
+               elm_hover.eo.c \
+               elm_hover.eo.h
 
 EXTRA_DIST += \
             elm_widget.eo \
@@ -543,7 +545,8 @@ EXTRA_DIST += \
             elm_layout.eo \
             elm_interface_scrollable.eo \
             elm_pan.eo \
-            elm_frame.eo
+            elm_frame.eo \
+            elm_hover.eo
 
 nodist_includesunstable_HEADERS = \
                                  elm_widget.eo.h \
@@ -551,5 +554,6 @@ nodist_includesunstable_HEADERS = \
                                  elm_layout.eo.h \
                                  elm_interface_scrollable.eo.h \
                                  elm_pan.eo.h \
-                                 elm_frame.eo.h
+                                 elm_frame.eo.h \
+                                 elm_hover.eo.h
 
diff --git a/src/lib/elm_hover.c b/src/lib/elm_hover.c
index b2da851..e299196 100644
--- a/src/lib/elm_hover.c
+++ b/src/lib/elm_hover.c
@@ -7,8 +7,6 @@
 #include "elm_priv.h"
 #include "elm_widget_hover.h"
 
-EAPI Eo_Op ELM_OBJ_HOVER_BASE_ID = EO_NOOP;
-
 #define MY_CLASS ELM_OBJ_HOVER_CLASS
 
 #define MY_CLASS_NAME "Elm_Hover"
@@ -122,7 +120,7 @@ _elm_hover_parent_detach(Evas_Object *obj)
 }
 
 static void
-_elm_hover_left_space_calc(Elm_Hover_Smart_Data *sd,
+_elm_hover_left_space_calc(Elm_Hover_Data *sd,
                            Evas_Coord *spc_l,
                            Evas_Coord *spc_t,
                            Evas_Coord *spc_r,
@@ -145,7 +143,7 @@ _elm_hover_left_space_calc(Elm_Hover_Smart_Data *sd,
 }
 
 static Content_Info *
-_elm_hover_smart_content_location_get(Elm_Hover_Smart_Data *sd,
+_elm_hover_smart_content_location_get(Elm_Hover_Data *sd,
                                       Evas_Coord spc_l,
                                       Evas_Coord spc_t,
                                       Evas_Coord spc_r,
@@ -279,16 +277,12 @@ _hov_show_do(Evas_Object *obj)
    }
 }
 
-static void
-_elm_hover_smart_theme(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_hover_elm_widget_theme_apply(Eo *obj, Elm_Hover_Data *sd)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   if (ret) *ret = EINA_FALSE;
    Eina_Bool int_ret;
-   Elm_Hover_Smart_Data *sd = _pd;
-
    eo_do_super(obj, MY_CLASS, elm_obj_widget_theme_apply(&int_ret));
-   if (!int_ret) return;
+   if (!int_ret) return EINA_FALSE;
 
    if (sd->smt_sub) _elm_hover_smt_sub_re_eval(obj);
 
@@ -296,16 +290,15 @@ _elm_hover_smart_theme(Eo *obj, void *_pd, va_list *list)
 
    if (evas_object_visible_get(obj)) _hov_show_do(obj);
 
-   if (ret) *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
-static void
-_elm_hover_smart_sizing_eval(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_hover_elm_layout_sizing_eval(Eo *obj, Elm_Hover_Data *sd)
 {
    Evas_Coord ofs_x, x = 0, y = 0, w = 0, h = 0, x2 = 0,
               y2 = 0, w2 = 0, h2 = 0;
 
-   Elm_Hover_Smart_Data *sd = _pd;
 
    if (sd->on_del) return;
 
@@ -331,40 +324,30 @@ _on_smt_sub_changed(void *data,
    _elm_hover_smt_sub_re_eval(data);
 }
 
-static void
-_elm_hover_smart_sub_object_add(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_hover_elm_widget_sub_object_add(Eo *obj, Elm_Hover_Data *sd, Evas_Object 
*sobj)
 {
-   Evas_Object *sobj = va_arg(*list, Evas_Object *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   if (ret) *ret = EINA_FALSE;
    Eina_Bool int_ret;
-   Elm_Hover_Smart_Data *sd = _pd;
 
-   if (evas_object_data_get(sobj, "elm-parent") == obj)
-     goto end;
+   if (evas_object_data_get(sobj, "elm-parent") == obj) return EINA_TRUE;
 
    eo_do_super(obj, MY_CLASS, elm_obj_widget_sub_object_add(sobj, &int_ret));
-   if (!int_ret) return;
+   if (!int_ret) return EINA_FALSE;
 
    if (sd->smt_sub && sd->smt_sub->obj == sobj)
      evas_object_event_callback_add
        (sobj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _on_smt_sub_changed, obj);
 
-end:
-   if (ret) *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
-static void
-_elm_hover_smart_sub_object_del(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_hover_elm_widget_sub_object_del(Eo *obj, Elm_Hover_Data *sd, Evas_Object 
*sobj)
 {
-   Evas_Object *sobj = va_arg(*list, Evas_Object *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   if (ret) *ret = EINA_FALSE;
    Eina_Bool int_ret;
-   Elm_Hover_Smart_Data *sd = _pd;
 
    eo_do_super(obj, MY_CLASS, elm_obj_widget_sub_object_del(sobj, &int_ret));
-   if (!int_ret) return;
+   if (!int_ret) return EINA_FALSE;
 
    if (sd->smt_sub && sd->smt_sub->obj == sobj)
      {
@@ -387,27 +370,22 @@ _elm_hover_smart_sub_object_del(Eo *obj, void *_pd, 
va_list *list)
         }
      }
 
-   if (ret) *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
 static void
-_elm_hover_subs_del(Elm_Hover_Smart_Data *sd)
+_elm_hover_subs_del(Elm_Hover_Data *sd)
 {
    ELM_HOVER_PARTS_FOREACH
      ELM_SAFE_FREE(sd->subs[i].obj, evas_object_del);
 }
 
-static void
-_elm_hover_smart_content_set(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Eina_Bool
+_elm_hover_elm_container_content_set(Eo *obj, Elm_Hover_Data *sd, const char 
*swallow, Evas_Object *content)
 {
-   const char *swallow= va_arg(*list, const char *);
-   Evas_Object *content = va_arg(*list, Evas_Object *);
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   if (ret) *ret = EINA_FALSE;
    Eina_Bool int_ret;
-   Elm_Hover_Smart_Data *sd = _pd;
 
-   if (!swallow) return;
+   if (!swallow) return EINA_FALSE;
 
    if (!strcmp(swallow, "smart"))
      {
@@ -442,7 +420,7 @@ _elm_hover_smart_content_set(Eo *obj, void *_pd, va_list 
*list)
      }
 
    eo_do_super(obj, MY_CLASS, elm_obj_container_content_set(swallow, content, 
&int_ret));
-   if (!int_ret) return;
+   if (!int_ret) return EINA_FALSE;
 
    if (strstr(swallow, "elm.swallow.slot."))
      swallow += sizeof("elm.swallow.slot.");
@@ -458,35 +436,31 @@ _elm_hover_smart_content_set(Eo *obj, void *_pd, va_list 
*list)
 
 end:
    elm_layout_sizing_eval(obj);
-   if (ret) *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
-static void
-_elm_hover_smart_content_get(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Evas_Object*
+_elm_hover_elm_container_content_get(Eo *obj, Elm_Hover_Data *sd, const char 
*swallow)
 {
-   const char *swallow = va_arg(*list, const char *);
-   Evas_Object **ret = va_arg(*list, Evas_Object **);
-   Elm_Hover_Smart_Data *sd = _pd;
-   *ret = NULL;
+   Evas_Object *ret;
+   ret = NULL;
 
-   if (!swallow) return;
+   if (!swallow) return ret;
 
    if (!strcmp(swallow, "smart"))
-      eo_do_super(obj, MY_CLASS, 
elm_obj_container_content_get(sd->smt_sub->swallow, ret));
+      eo_do_super(obj, MY_CLASS, 
elm_obj_container_content_get(sd->smt_sub->swallow, &ret));
    else
-      eo_do_super(obj, MY_CLASS, elm_obj_container_content_get(swallow, ret));
+      eo_do_super(obj, MY_CLASS, elm_obj_container_content_get(swallow, &ret));
+
+   return ret;
 }
 
-static void
-_elm_hover_smart_content_unset(Eo *obj, void *_pd, va_list *list)
+EOLIAN static Evas_Object*
+_elm_hover_elm_container_content_unset(Eo *obj, Elm_Hover_Data *sd, const char 
*swallow)
 {
-   const char *swallow = va_arg(*list, const char *);
-   Evas_Object **ret = va_arg(*list, Evas_Object **);
-   if (ret) *ret = NULL;
    Evas_Object *int_ret;
-   Elm_Hover_Smart_Data *sd = _pd;
 
-   if (!swallow) return;
+   if (!swallow) return NULL;
 
    if (!strcmp(swallow, "smart"))
       eo_do_super(obj, MY_CLASS, elm_obj_container_content_unset
@@ -494,7 +468,7 @@ _elm_hover_smart_content_unset(Eo *obj, void *_pd, va_list 
*list)
    else
       eo_do_super(obj, MY_CLASS, elm_obj_container_content_unset
             (swallow, &int_ret));
-   if (ret) *ret = int_ret;
+   return int_ret;
 }
 
 static void
@@ -529,10 +503,9 @@ _hov_dismiss_cb(void *data,
    evas_object_smart_callback_call(data, SIG_DISMISSED, NULL);
 }
 
-static void
-_elm_hover_smart_add(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_hover_evas_smart_add(Eo *obj, Elm_Hover_Data *priv)
 {
-   Elm_Hover_Smart_Data *priv = _pd;
    unsigned int i;
 
    eo_do_super(obj, MY_CLASS, evas_obj_smart_add());
@@ -561,10 +534,9 @@ _elm_hover_smart_add(Eo *obj, void *_pd, va_list *list 
EINA_UNUSED)
    elm_widget_can_focus_set(obj, EINA_FALSE);
 }
 
-static void
-_elm_hover_smart_del(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_hover_evas_smart_del(Eo *obj, Elm_Hover_Data *sd)
 {
-   Elm_Hover_Smart_Data *sd = _pd;
 
    sd->on_del = EINA_TRUE;
 
@@ -582,38 +554,33 @@ _elm_hover_smart_del(Eo *obj, void *_pd, va_list *list 
EINA_UNUSED)
    eo_do_super(obj, MY_CLASS, evas_obj_smart_del());
 }
 
-static void
-_elm_hover_smart_move(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static void
+_elm_hover_evas_smart_move(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED, 
Evas_Coord x, Evas_Coord y)
 {
-   Evas_Coord x = va_arg(*list, Evas_Coord);
-   Evas_Coord y = va_arg(*list, Evas_Coord);
    eo_do_super(obj, MY_CLASS, evas_obj_smart_move(x, y));
 
    elm_layout_sizing_eval(obj);
 }
 
-static void
-_elm_hover_smart_resize(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static void
+_elm_hover_evas_smart_resize(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED, 
Evas_Coord w, Evas_Coord h)
 {
-   Evas_Coord w = va_arg(*list, Evas_Coord);
-   Evas_Coord h = va_arg(*list, Evas_Coord);
    eo_do_super(obj, MY_CLASS, evas_obj_smart_resize(w, h));
 
    elm_layout_sizing_eval(obj);
 }
 
-static void
-_elm_hover_smart_show(Eo *obj, void *_pd EINA_UNUSED, va_list *list 
EINA_UNUSED)
+EOLIAN static void
+_elm_hover_evas_smart_show(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED)
 {
    eo_do_super(obj, MY_CLASS, evas_obj_smart_show());
 
    _hov_show_do(obj);
 }
 
-static void
-_elm_hover_smart_hide(Eo *obj, void *_pd, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_hover_evas_smart_hide(Eo *obj, Elm_Hover_Data *sd)
 {
-   Elm_Hover_Smart_Data *sd = _pd;
    eo_do_super(obj, MY_CLASS, evas_obj_smart_hide());
 
    elm_layout_signal_emit(obj, "elm,action,hide", "elm");
@@ -631,11 +598,10 @@ _elm_hover_smart_hide(Eo *obj, void *_pd, va_list *list 
EINA_UNUSED)
    }
 }
 
-static void
-_elm_hover_smart_content_aliases_get(Eo *obj EINA_UNUSED, void *_pd 
EINA_UNUSED, va_list *list)
+EOLIAN static const Elm_Layout_Part_Alias_Description*
+_elm_hover_elm_layout_content_aliases_get(Eo *obj EINA_UNUSED, Elm_Hover_Data 
*_pd EINA_UNUSED)
 {
-   const Elm_Layout_Part_Alias_Description **aliases = va_arg(*list, const 
Elm_Layout_Part_Alias_Description **);
-   *aliases = _content_aliases;
+   return _content_aliases;
 }
 
 EAPI Evas_Object *
@@ -647,8 +613,8 @@ elm_hover_add(Evas_Object *parent)
    return obj;
 }
 
-static void
-_constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_hover_constructor(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED)
 {
    eo_do_super(obj, MY_CLASS, eo_constructor());
    eo_do(obj,
@@ -656,19 +622,9 @@ _constructor(Eo *obj, void *_pd EINA_UNUSED, va_list *list 
EINA_UNUSED)
          evas_obj_smart_callbacks_descriptions_set(_smart_callbacks, NULL));
 }
 
-EAPI void
-elm_hover_target_set(Evas_Object *obj,
-                     Evas_Object *target)
-{
-   ELM_HOVER_CHECK(obj);
-   eo_do(obj, elm_obj_hover_target_set(target));
-}
-
-static void
-_elm_hover_target_set(Eo *obj, void *_pd, va_list *list)
+EOLIAN static void
+_elm_hover_target_set(Eo *obj, Elm_Hover_Data *sd, Evas_Object *target)
 {
-   Evas_Object *target = va_arg(*list, Evas_Object *);
-   Elm_Hover_Smart_Data *sd = _pd;
 
    if (sd->target)
      {
@@ -699,12 +655,9 @@ elm_hover_parent_set(Evas_Object *obj,
    eo_do(obj, elm_obj_widget_parent_set(parent));
 }
 
-static void
-_elm_hover_smart_parent_set(Eo *obj, void *_pd EINA_UNUSED, va_list *list)
+EOLIAN static void
+_elm_hover_elm_widget_parent_set(Eo *obj, Elm_Hover_Data *sd, Evas_Object 
*parent)
 {
-   Evas_Object *parent = va_arg(*list, Evas_Object *);
-   Elm_Hover_Smart_Data *sd = _pd;
-
    _elm_hover_parent_detach(obj);
 
    sd->parent = parent;
@@ -725,21 +678,10 @@ _elm_hover_smart_parent_set(Eo *obj, void *_pd 
EINA_UNUSED, va_list *list)
    elm_layout_sizing_eval(obj);
 }
 
-EAPI Evas_Object *
-elm_hover_target_get(const Evas_Object *obj)
+EOLIAN static Evas_Object*
+_elm_hover_target_get(Eo *obj EINA_UNUSED, Elm_Hover_Data *sd)
 {
-   ELM_HOVER_CHECK(obj) NULL;
-   Evas_Object *ret = NULL;
-   eo_do((Eo *) obj, elm_obj_hover_target_get(&ret));
-   return ret;
-}
-
-static void
-_elm_hover_target_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
-{
-   Evas_Object **ret = va_arg(*list, Evas_Object **);
-   Elm_Hover_Smart_Data *sd = _pd;
-   *ret = sd->target;
+   return sd->target;
 }
 
 EAPI Evas_Object *
@@ -751,151 +693,74 @@ elm_hover_parent_get(const Evas_Object *obj)
    return ret;
 }
 
-static void
-_elm_hover_smart_parent_get(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
+EOLIAN static Evas_Object*
+_elm_hover_elm_widget_parent_get(Eo *obj EINA_UNUSED, Elm_Hover_Data *sd)
 {
-   Evas_Object **ret = va_arg(*list, Evas_Object **);
-   Elm_Hover_Smart_Data *sd = _pd;
-   *ret = sd->parent;
+   return sd->parent;
 }
 
-EAPI const char *
-elm_hover_best_content_location_get(const Evas_Object *obj,
-                                    Elm_Hover_Axis pref_axis)
-{
-   ELM_HOVER_CHECK(obj) NULL;
-   const char *ret = NULL;
-   eo_do((Eo *) obj, elm_obj_hover_best_content_location_get(pref_axis, &ret));
-   return ret;
-}
-
-static void
-_elm_hover_best_content_location_get(Eo *obj EINA_UNUSED, void *_pd, va_list 
*list)
+EOLIAN static const char*
+_elm_hover_best_content_location_get(Eo *obj EINA_UNUSED, Elm_Hover_Data *sd, 
Elm_Hover_Axis pref_axis)
 {
    Evas_Coord spc_l, spc_r, spc_t, spc_b;
 
-   Elm_Hover_Axis pref_axis = va_arg(*list, Elm_Hover_Axis);
-   const char **ret = va_arg(*list, const char **);
-   Elm_Hover_Smart_Data *sd = _pd;
-
    _elm_hover_left_space_calc(sd, &spc_l, &spc_t, &spc_r, &spc_b);
 
    if (pref_axis == ELM_HOVER_AXIS_HORIZONTAL)
      {
-        if (spc_l < spc_r) *ret = (_HOV_RIGHT)->swallow;
-        else *ret = (_HOV_LEFT)->swallow;
-        return;
+        if (spc_l < spc_r) return (_HOV_RIGHT)->swallow;
+        else return (_HOV_LEFT)->swallow;
      }
    else if (pref_axis == ELM_HOVER_AXIS_VERTICAL)
      {
-        if (spc_t < spc_b) *ret = (_HOV_BOTTOM)->swallow;
-        else *ret = (_HOV_TOP)->swallow;
-        return;
+        if (spc_t < spc_b) return (_HOV_BOTTOM)->swallow;
+        else return (_HOV_TOP)->swallow;
      }
 
    if (spc_l < spc_r)
      {
         if (spc_t > spc_r)
-           *ret = (_HOV_TOP)->swallow;
+           return (_HOV_TOP)->swallow;
         else if (spc_b > spc_r)
-           *ret = (_HOV_BOTTOM)->swallow;
+           return (_HOV_BOTTOM)->swallow;
         else
-           *ret = (_HOV_RIGHT)->swallow;
-        return;
+           return (_HOV_RIGHT)->swallow;
      }
 
    if (spc_t > spc_r)
-      *ret = (_HOV_TOP)->swallow;
+      return (_HOV_TOP)->swallow;
    else if (spc_b > spc_r)
-      *ret = (_HOV_BOTTOM)->swallow;
+      return (_HOV_BOTTOM)->swallow;
    else
-      *ret = (_HOV_LEFT)->swallow;
-}
+      return (_HOV_LEFT)->swallow;
 
-EAPI void
-elm_hover_dismiss(Evas_Object *obj)
-{
-   ELM_HOVER_CHECK(obj);
-   eo_do(obj, elm_obj_hover_dismiss());
+   return NULL;
 }
 
-static void
-_elm_hover_dismiss(Eo *obj, void *_pd EINA_UNUSED, va_list *list EINA_UNUSED)
+EOLIAN static void
+_elm_hover_dismiss(Eo *obj, Elm_Hover_Data *_pd EINA_UNUSED)
 {
    elm_layout_signal_emit(obj, "elm,action,dismiss", ""); // XXX: for compat
    elm_layout_signal_emit(obj, "elm,action,dismiss", "elm");
 }
 
-static void
-_elm_hover_smart_focus_next_manager_is(Eo *obj EINA_UNUSED, void *_pd 
EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_hover_elm_widget_focus_next_manager_is(Eo *obj EINA_UNUSED, 
Elm_Hover_Data *_pd EINA_UNUSED)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
-static void
-_elm_hover_smart_focus_direction_manager_is(Eo *obj EINA_UNUSED, void *_pd 
EINA_UNUSED, va_list *list)
+EOLIAN static Eina_Bool
+_elm_hover_elm_widget_focus_direction_manager_is(Eo *obj EINA_UNUSED, 
Elm_Hover_Data *_pd EINA_UNUSED)
 {
-   Eina_Bool *ret = va_arg(*list, Eina_Bool *);
-   *ret = EINA_TRUE;
+   return EINA_TRUE;
 }
 
-static void
-_class_constructor(Eo_Class *klass)
-{
-      const Eo_Op_Func_Description func_desc[] = {
-           EO_OP_FUNC(EO_BASE_ID(EO_BASE_SUB_ID_CONSTRUCTOR), _constructor),
-
-           EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_ADD), 
_elm_hover_smart_add),
-           EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_DEL), 
_elm_hover_smart_del),
-           EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_RESIZE), 
_elm_hover_smart_resize),
-           EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_MOVE), 
_elm_hover_smart_move),
-           EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_SHOW), 
_elm_hover_smart_show),
-           EO_OP_FUNC(EVAS_OBJ_SMART_ID(EVAS_OBJ_SMART_SUB_ID_HIDE), 
_elm_hover_smart_hide),
-
-           EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_THEME_APPLY), 
_elm_hover_smart_theme),
-           EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_SUB_OBJECT_ADD), 
_elm_hover_smart_sub_object_add),
-           EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_SUB_OBJECT_DEL), 
_elm_hover_smart_sub_object_del),
-           EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_PARENT_SET), 
_elm_hover_smart_parent_set),
-           EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_PARENT_GET), 
_elm_hover_smart_parent_get),
-           
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_NEXT_MANAGER_IS), 
_elm_hover_smart_focus_next_manager_is),
-           
EO_OP_FUNC(ELM_OBJ_WIDGET_ID(ELM_OBJ_WIDGET_SUB_ID_FOCUS_DIRECTION_MANAGER_IS), 
_elm_hover_smart_focus_direction_manager_is),
-
-           
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_SET), 
_elm_hover_smart_content_set),
-           
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_GET), 
_elm_hover_smart_content_get),
-           
EO_OP_FUNC(ELM_OBJ_CONTAINER_ID(ELM_OBJ_CONTAINER_SUB_ID_CONTENT_UNSET), 
_elm_hover_smart_content_unset),
-
-           EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_SIZING_EVAL), 
_elm_hover_smart_sizing_eval),
-           
EO_OP_FUNC(ELM_OBJ_LAYOUT_ID(ELM_OBJ_LAYOUT_SUB_ID_CONTENT_ALIASES_GET), 
_elm_hover_smart_content_aliases_get),
-
-           EO_OP_FUNC(ELM_OBJ_HOVER_ID(ELM_OBJ_HOVER_SUB_ID_TARGET_SET), 
_elm_hover_target_set),
-           EO_OP_FUNC(ELM_OBJ_HOVER_ID(ELM_OBJ_HOVER_SUB_ID_TARGET_GET), 
_elm_hover_target_get),
-           
EO_OP_FUNC(ELM_OBJ_HOVER_ID(ELM_OBJ_HOVER_SUB_ID_BEST_CONTENT_LOCATION_GET), 
_elm_hover_best_content_location_get),
-           EO_OP_FUNC(ELM_OBJ_HOVER_ID(ELM_OBJ_HOVER_SUB_ID_DISMISS), 
_elm_hover_dismiss),
-           EO_OP_FUNC_SENTINEL
-      };
-      eo_class_funcs_set(klass, func_desc);
 
+EOLIAN static void
+_elm_hover_class_constructor(Eo_Class *klass)
+{
    evas_smart_legacy_type_register(MY_CLASS_NAME_LEGACY, klass);
 }
 
-static const Eo_Op_Description op_desc[] = {
-     EO_OP_DESCRIPTION(ELM_OBJ_HOVER_SUB_ID_TARGET_SET, "Sets the target 
object for the hover."),
-     EO_OP_DESCRIPTION(ELM_OBJ_HOVER_SUB_ID_TARGET_GET, "Get the target object 
for the hover."),
-     EO_OP_DESCRIPTION(ELM_OBJ_HOVER_SUB_ID_BEST_CONTENT_LOCATION_GET, 
"Returns the best swallow location for content in the hover."),
-     EO_OP_DESCRIPTION(ELM_OBJ_HOVER_SUB_ID_DISMISS, "Dismiss a hover 
object."),
-     EO_OP_DESCRIPTION_SENTINEL
-};
-
-static const Eo_Class_Description class_desc = {
-     EO_VERSION,
-     MY_CLASS_NAME,
-     EO_CLASS_TYPE_REGULAR,
-     EO_CLASS_DESCRIPTION_OPS(&ELM_OBJ_HOVER_BASE_ID, op_desc, 
ELM_OBJ_HOVER_SUB_ID_LAST),
-     NULL,
-     sizeof(Elm_Hover_Smart_Data),
-     _class_constructor,
-     NULL
-};
-
-EO_DEFINE_CLASS(elm_obj_hover_class_get, &class_desc, ELM_OBJ_LAYOUT_CLASS, 
EVAS_SMART_CLICKABLE_INTERFACE, NULL);
+#include "elm_hover.eo.c"
diff --git a/src/lib/elm_hover.eo b/src/lib/elm_hover.eo
new file mode 100644
index 0000000..031ad5e
--- /dev/null
+++ b/src/lib/elm_hover.eo
@@ -0,0 +1,97 @@
+class Elm_Hover (Elm_Layout, Evas_Clickable_Interface)
+{
+   eo_prefix: elm_obj_hover;
+   properties {
+      target {
+         set {
+            /*@
+            @brief Sets the target object for the hover.
+
+            This function will cause the hover to be centered on the target 
object.
+
+            @ingroup Hover */
+         }
+         get {
+            /*@
+            @brief Get the target object for the hover.
+
+            @return The target object for the hover.
+
+            @see elm_hover_target_set()
+
+            @ingroup Hover */
+         }
+         values {
+            Evas_Object *target; /*@ The object to center the hover onto. */
+         }
+      }
+   }
+   methods {
+      best_content_location_get {
+         /*@
+         @brief Returns the best swallow location for content in the hover.
+
+         @return The edje location to place content into the hover or @c
+         NULL, on errors.
+
+         Best is defined here as the location at which there is the most 
available
+         space.
+
+         @p pref_axis may be one of
+         - @c ELM_HOVER_AXIS_NONE -- no preferred orientation
+         - @c ELM_HOVER_AXIS_HORIZONTAL -- horizontal
+         - @c ELM_HOVER_AXIS_VERTICAL -- vertical
+         - @c ELM_HOVER_AXIS_BOTH -- both
+
+         If ELM_HOVER_AXIS_HORIZONTAL is chosen the returned position will
+         necessarily be along the horizontal axis("left" or "right"). If
+         ELM_HOVER_AXIS_VERTICAL is chosen the returned position will 
necessarily
+         be along the vertical axis("top" or "bottom"). Choosing
+         ELM_HOVER_AXIS_BOTH or ELM_HOVER_AXIS_NONE has the same effect and the
+         returned position may be in either axis.
+
+         @see elm_object_part_content_set()
+
+         @ingroup Hover */
+
+         const;
+         return const char *;
+         params {
+            @in Elm_Hover_Axis pref_axis; /*@ The preferred orientation axis 
for the hover object to use */
+         }
+      }
+      dismiss {
+         /*@
+         @brief Dismiss a hover object
+
+         @ingroup Hover */
+
+      }
+   }
+   implements {
+      class::constructor;
+      Eo_Base::constructor;
+      Evas_Smart::del;
+      Evas_Smart::hide;
+      Evas_Smart::show;
+      Evas_Smart::move;
+      Evas_Smart::add;
+      Evas_Smart::resize;
+      Elm_Widget::theme_apply;
+      Elm_Widget::sub_object_add;
+      Elm_Widget::parent;
+      Elm_Widget::focus_direction_manager_is;
+      Elm_Widget::focus_next_manager_is;
+      Elm_Widget::sub_object_del;
+      Elm_Container::content_get;
+      Elm_Container::content_set;
+      Elm_Container::content_unset;
+      Elm_Layout::sizing_eval;
+      Elm_Layout::content_aliases::get;
+   }
+   events {
+      focused;
+      unfocused;
+   }
+
+}
diff --git a/src/lib/elm_hover_eo.h b/src/lib/elm_hover_eo.h
index 782f525..f1052a0 100644
--- a/src/lib/elm_hover_eo.h
+++ b/src/lib/elm_hover_eo.h
@@ -1,3 +1,6 @@
+#include "elm_hover.eo.h"
+
+#if 0
 #define ELM_OBJ_HOVER_CLASS elm_obj_hover_class_get()
 
 const Eo_Class *elm_obj_hover_class_get(void) EINA_CONST;
@@ -69,3 +72,6 @@ const Eo_Class *elm_obj_hover_class_get(void) EINA_CONST;
  * @see elm_hover_dismiss
  */
 #define elm_obj_hover_dismiss() ELM_OBJ_HOVER_ID(ELM_OBJ_HOVER_SUB_ID_DISMISS)
+
+#endif
+
diff --git a/src/lib/elm_widget_hover.h b/src/lib/elm_widget_hover.h
index d0c1af3..3aa35b0 100644
--- a/src/lib/elm_widget_hover.h
+++ b/src/lib/elm_widget_hover.h
@@ -18,7 +18,7 @@
 /**
  * Base widget smart data extended with hover instance data.
  */
-typedef struct _Elm_Hover_Smart_Data Elm_Hover_Smart_Data;
+typedef struct _Elm_Hover_Data       Elm_Hover_Data;
 typedef struct _Content_Info         Content_Info;
 
 struct _Content_Info
@@ -30,7 +30,7 @@ struct _Content_Info
 /* WARNING: sync size with actual declaration, always */
 extern const Elm_Layout_Part_Alias_Description _content_aliases[10];
 
-struct _Elm_Hover_Smart_Data
+struct _Elm_Hover_Data
 {
    Evas_Object          *offset, *size;
    Evas_Object          *parent, *target;
@@ -47,7 +47,7 @@ struct _Elm_Hover_Smart_Data
  */
 
 #define ELM_HOVER_DATA_GET(o, sd) \
-  Elm_Hover_Smart_Data * sd = eo_data_scope_get(o, ELM_OBJ_HOVER_CLASS)
+  Elm_Hover_Data * sd = eo_data_scope_get(o, ELM_OBJ_HOVER_CLASS)
 
 #define ELM_HOVER_DATA_GET_OR_RETURN(o, ptr)         \
   ELM_HOVER_DATA_GET(o, ptr);                        \

-- 


Reply via email to