[genlist] apply r71140 with local enhancement
[framework/uifw/elementary.git] / src / lib / elm_access.c
index 12c40c7..4ea5582 100644 (file)
@@ -237,11 +237,7 @@ _elm_access_callback_set(Elm_Access_Info *ac, int type, Elm_Access_Content_Cb fu
 }
 
 EAPI char *
-<<<<<<< HEAD
-_elm_access_text_get(Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item)
-=======
 _elm_access_text_get(const Elm_Access_Info *ac, int type, Evas_Object *obj, Elm_Widget_Item *item)
->>>>>>> remotes/origin/upstream
 {
    Elm_Access_Item *ai;
    Eina_List *l;
@@ -308,21 +304,13 @@ _elm_access_say(const char *txt)
 }
 
 EAPI Elm_Access_Info *
-<<<<<<< HEAD
-_elm_access_object_get(Evas_Object *obj)
-=======
 _elm_access_object_get(const Evas_Object *obj)
->>>>>>> remotes/origin/upstream
 {
    return evas_object_data_get(obj, "_elm_access");
 }
 
 EAPI Elm_Access_Info *
-<<<<<<< HEAD
-_elm_access_item_get(Elm_Widget_Item *it)
-=======
 _elm_access_item_get(const Elm_Widget_Item *it)
->>>>>>> remotes/origin/upstream
 {
    return it->access;
 }
@@ -479,26 +467,37 @@ _access_item_mouse_out_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNU
      }
 }
 
-static void
-_access_item_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+static void _access_item_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__);
+
+EAPI void
+_elm_access_item_unregister(Elm_Widget_Item *item)
 {
    Elm_Access_Info *ac;
 
-   evas_object_event_callback_del_full(obj, EVAS_CALLBACK_MOUSE_IN,
-                                       _access_item_mouse_in_cb, data);
-   evas_object_event_callback_del_full(obj, EVAS_CALLBACK_MOUSE_OUT,
-                                       _access_item_mouse_out_cb, data);
-   evas_object_event_callback_del_full(obj, EVAS_CALLBACK_DEL,
-                                       _access_item_del_cb, data);
-   ac = ((Elm_Widget_Item *)data)->access;
-   ((Elm_Widget_Item *)data)->access = NULL;
+   ac = item->access;
    if (ac)
      {
+        evas_object_event_callback_del_full(ac->hoverobj,
+                                            EVAS_CALLBACK_MOUSE_IN,
+                                            _access_item_mouse_in_cb, item);
+        evas_object_event_callback_del_full(ac->hoverobj,
+                                            EVAS_CALLBACK_MOUSE_OUT,
+                                            _access_item_mouse_out_cb, item);
+        evas_object_event_callback_del_full(ac->hoverobj,
+                                            EVAS_CALLBACK_DEL,
+                                            _access_item_del_cb, item);
+        item->access = NULL;
         _elm_access_clear(ac);
         free(ac);
      }
 }
 
+static void
+_access_item_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+   _elm_access_item_unregister((Elm_Widget_Item *)data);
+}
+
 EAPI void
 _elm_access_item_register(Elm_Widget_Item *item, Evas_Object *hoverobj)
 {
@@ -511,6 +510,7 @@ _elm_access_item_register(Elm_Widget_Item *item, Evas_Object *hoverobj)
    evas_object_event_callback_add(hoverobj, EVAS_CALLBACK_DEL,
                                   _access_item_del_cb, item);
    ac = calloc(1, sizeof(Elm_Access_Info));
+   ac->hoverobj = hoverobj;
    item->access = ac;
 }