jackdanielz pushed a commit to branch master.

http://git.enlightenment.org/core/elementary.git/commit/?id=160b62e5d239aa5d2378de349c1c514b280e83f2

commit 160b62e5d239aa5d2378de349c1c514b280e83f2
Author: Avi Levin <avi.le...@samsung.com>
Date:   Wed May 13 18:15:59 2015 +0300

    elm_menu: porting evas smart callbacks to eo
---
 src/lib/elm_menu.c  | 52 +++++++++++++++++++++++++++++++---------------------
 src/lib/elm_menu.eo |  3 +++
 2 files changed, 34 insertions(+), 21 deletions(-)

diff --git a/src/lib/elm_menu.c b/src/lib/elm_menu.c
index cf5dbf1..ce49793 100644
--- a/src/lib/elm_menu.c
+++ b/src/lib/elm_menu.c
@@ -419,14 +419,17 @@ _menu_hide(void *data,
      }
 }
 
-static void
+static Eina_Bool
 _hover_dismissed_cb(void *data,
-                    Evas_Object *obj,
+                    Eo *obj, const Eo_Event_Description *desc EINA_UNUSED,
                     void *event_info)
 {
    _menu_hide(data, obj, event_info);
-   evas_object_smart_callback_call(data, SIG_CLICKED, NULL);
-   evas_object_smart_callback_call(data, SIG_DISMISSED, NULL);
+   eo_do(data, eo_event_callback_call
+     (EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED, NULL));
+   eo_do(data, eo_event_callback_call(ELM_MENU_EVENT_DISMISSED, NULL));
+
+   return EINA_TRUE;
 }
 
 static void
@@ -509,8 +512,9 @@ _menu_item_inactivate_cb(void *data,
    if (item->submenu.open) _submenu_hide(item);
 }
 
-static void
-_block_menu(void *_sd, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+static Eina_Bool
+_block_menu(void *_sd,
+      Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void 
*event_info EINA_UNUSED)
 {
    const Eina_List *l;
    Elm_Object_Item *eo_current;
@@ -524,10 +528,13 @@ _block_menu(void *_sd, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNUSE
         current->blocked = EINA_TRUE;
         elm_object_item_disabled_set(eo_current, EINA_TRUE);
      }
+
+   return EINA_TRUE;
 }
 
-static void
-_unblock_menu(void *_sd, Evas_Object *obj EINA_UNUSED, void *event_info 
EINA_UNUSED)
+static Eina_Bool
+_unblock_menu(void *_sd,
+      Eo *obj EINA_UNUSED, const Eo_Event_Description *desc EINA_UNUSED, void 
*event_info EINA_UNUSED)
 {
    const Eina_List *l;
    Elm_Object_Item *eo_current;
@@ -539,6 +546,8 @@ _unblock_menu(void *_sd, Evas_Object *obj EINA_UNUSED, void 
*event_info EINA_UNU
         elm_object_item_disabled_set(eo_current, !current->was_enabled);
         current->blocked = EINA_FALSE;
      }
+
+   return EINA_TRUE;
 }
 
 EOLIAN static void
@@ -605,8 +614,8 @@ _item_submenu_obj_create(Elm_Menu_Item_Data *item)
      {
         snprintf(style, sizeof(style), "main_menu_submenu/%s", 
elm_widget_style_get(WIDGET(item)));
         elm_object_style_set(hv, style);
-        evas_object_smart_callback_add(hv, "dismissed",
-                                       _hover_dismissed_cb, WIDGET(item));
+        eo_do(hv, eo_event_callback_add
+          (ELM_HOVER_EVENT_DISMISSED, _hover_dismissed_cb, WIDGET(item)));
      }
    else
      {
@@ -667,8 +676,8 @@ _elm_menu_evas_object_smart_add(Eo *obj, Elm_Menu_Data 
*priv)
    elm_widget_mirrored_set(priv->hv, EINA_FALSE);
 
    elm_object_style_set(priv->hv, "menu/default");
-   evas_object_smart_callback_add(priv->hv, "dismissed",
-                                  _hover_dismissed_cb, obj);
+   eo_do(priv->hv, eo_event_callback_add
+     (ELM_HOVER_EVENT_DISMISSED, _hover_dismissed_cb, obj));
 
    priv->bx = elm_box_add(obj);
    elm_widget_mirrored_set(priv->bx, EINA_FALSE);
@@ -741,16 +750,17 @@ _elm_menu_menu_bar_set(Eo *obj, Eina_Bool menu_bar)
 
         if (menu_bar)
           {
-             evas_object_smart_callback_add(item->submenu.hv, "clicked",
-                                            _hover_dismissed_cb, WIDGET(item));
+             eo_do(item->submenu.hv, eo_event_callback_add
+               (EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED,
+                _hover_dismissed_cb, WIDGET(item)));
              snprintf(style, sizeof(style), "main_menu_submenu//%s", 
elm_widget_style_get(obj));
              elm_object_style_set(item->submenu.hv, style);
           }
         else
           {
-             evas_object_smart_callback_del_full(item->submenu.hv, "clicked",
-                                                 _hover_dismissed_cb,
-                                                 WIDGET(item));
+             eo_do(item->submenu.hv, eo_event_callback_del(
+               EVAS_CLICKABLE_INTERFACE_EVENT_CLICKED,
+               _hover_dismissed_cb, WIDGET(item)));
              snprintf(style, sizeof(style), "submenu/%s", 
elm_widget_style_get(obj));
              elm_object_style_set(item->submenu.hv, style);
           }
@@ -786,10 +796,10 @@ _elm_menu_eo_base_constructor(Eo *obj, Elm_Menu_Data *sd)
        (sd->hv, ELM_HOVER_AXIS_VERTICAL), sd->bx);
 
    _sizing_eval(obj);
-   evas_object_smart_callback_add(obj, "elm,action,block_menu",
-                                  _block_menu, sd);
-   evas_object_smart_callback_add(obj, "elm,action,unblock_menu",
-                                  _unblock_menu, sd);
+   eo_do(obj, eo_event_callback_add
+     (ELM_MENU_EVENT_ELM_ACTION_BLOCK_MENU, _block_menu, sd));
+   eo_do(obj, eo_event_callback_add
+     (ELM_MENU_EVENT_ELM_ACTION_UNBLOCK_MENU, _unblock_menu, sd));
 
    return obj;
 }
diff --git a/src/lib/elm_menu.eo b/src/lib/elm_menu.eo
index 82df81b..1e0e33a 100644
--- a/src/lib/elm_menu.eo
+++ b/src/lib/elm_menu.eo
@@ -124,6 +124,9 @@ class Elm.Menu (Elm.Widget, Evas.Clickable_Interface)
    events {
       language,changed;
       access,changed;
+      dismissed;
+      elm,action,block_menu;
+      elm,action,unblock_menu;
    }
 
 }

-- 


Reply via email to