diff options
author | Daniel Zaoui <daniel.zaoui@samsung.com> | 2014-09-14 14:51:26 +0300 |
---|---|---|
committer | Daniel Zaoui <daniel.zaoui@samsung.com> | 2014-09-17 15:08:43 +0300 |
commit | b7fecf3139745b7dbbba0b9e38adf7d8d297484e (patch) | |
tree | 16174a5abc3e8ffe96b8ce801b872eea4314b70c | |
parent | e4e229e3a6d8f26cf8955b900db9de14c8d86e86 (diff) | |
download | elementary-b7fecf3139745b7dbbba0b9e38adf7d8d297484e.tar.gz |
Remove data variable from widget item.
Now, data is stored in Eo layer via eo_key_data_set/get.
Two macros have been added to facilitate access.
-rw-r--r-- | src/lib/elc_fileselector.c | 2 | ||||
-rw-r--r-- | src/lib/elc_hoversel.c | 4 | ||||
-rw-r--r-- | src/lib/elc_multibuttonentry.c | 7 | ||||
-rw-r--r-- | src/lib/elc_popup.c | 4 | ||||
-rw-r--r-- | src/lib/elm_diskselector.c | 18 | ||||
-rw-r--r-- | src/lib/elm_flipselector.c | 4 | ||||
-rw-r--r-- | src/lib/elm_gengrid.c | 14 | ||||
-rw-r--r-- | src/lib/elm_genlist.c | 14 | ||||
-rw-r--r-- | src/lib/elm_index.c | 13 | ||||
-rw-r--r-- | src/lib/elm_list.c | 4 | ||||
-rw-r--r-- | src/lib/elm_menu.c | 8 | ||||
-rw-r--r-- | src/lib/elm_object_item.h | 19 | ||||
-rw-r--r-- | src/lib/elm_slideshow.c | 4 | ||||
-rw-r--r-- | src/lib/elm_toolbar.c | 16 | ||||
-rw-r--r-- | src/lib/elm_widget.c | 44 | ||||
-rw-r--r-- | src/lib/elm_widget.h | 10 | ||||
-rw-r--r-- | src/lib/elm_widget_item.eo | 21 |
17 files changed, 92 insertions, 114 deletions
diff --git a/src/lib/elc_fileselector.c b/src/lib/elc_fileselector.c index 689b361c8..2402c4ae7 100644 --- a/src/lib/elc_fileselector.c +++ b/src/lib/elc_fileselector.c @@ -1098,7 +1098,7 @@ _on_text_activated(void *data, Elm_Object_Item *item = elm_genlist_first_item_get(sd->files_view); while (item) { - const char *item_path = eo_do(item, elm_wdg_item_data_get()); + const char *item_path = WIDGET_ITEM_DATA_GET(item); if (!strcmp(item_path, path)) { elm_genlist_item_selected_set(item, EINA_TRUE); diff --git a/src/lib/elc_hoversel.c b/src/lib/elc_hoversel.c index 636e08e85..d436a4b83 100644 --- a/src/lib/elc_hoversel.c +++ b/src/lib/elc_hoversel.c @@ -111,7 +111,7 @@ _on_item_clicked(void *data, Elm_Hoversel_Item_Data *item = data; Evas_Object *obj2 = WIDGET(item); - if (item->func) item->func((void *)item->base->data, obj2, EO_OBJ(item)); + if (item->func) item->func((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(item)), obj2, EO_OBJ(item)); evas_object_smart_callback_call(obj2, SIG_SELECTED, EO_OBJ(item)); elm_hoversel_hover_end(obj2); } @@ -470,7 +470,7 @@ _elm_hoversel_item_add(Eo *obj, Elm_Hoversel_Data *sd, const char *label, const item->icon_file = eina_stringshare_add(icon_file); item->icon_type = icon_type; item->func = func; - item->base->data = data; + WIDGET_ITEM_DATA_SET(EO_OBJ(item), data); sd->items = eina_list_append(sd->items, eo_item); diff --git a/src/lib/elc_multibuttonentry.c b/src/lib/elc_multibuttonentry.c index 7e533fa47..82fe345de 100644 --- a/src/lib/elc_multibuttonentry.c +++ b/src/lib/elc_multibuttonentry.c @@ -703,8 +703,9 @@ _button_item_add(Elm_Multibuttonentry_Data *sd, evas_object_show(btn); // append item list - eo_item = eo_add(ELM_MULTIBUTTONENTRY_ITEM_CLASS, obj, elm_wdg_item_data_set(data)); + eo_item = eo_add(ELM_MULTIBUTTONENTRY_ITEM_CLASS, obj); if (!eo_item) return NULL; + WIDGET_ITEM_DATA_SET(eo_item, data); ELM_MULTIBUTTONENTRY_ITEM_DATA_GET(eo_item, item); @@ -1832,14 +1833,14 @@ _elm_multibuttonentry_item_next_get(Eo *eo_it, EINA_DEPRECATED EAPI void * elm_multibuttonentry_item_data_get(const Elm_Object_Item *it) { - return eo_do(it, elm_wdg_item_data_get()); + return (void *)WIDGET_ITEM_DATA_GET(it); } EINA_DEPRECATED EAPI void elm_multibuttonentry_item_data_set(Elm_Object_Item *it, void *data) { - eo_do(it, elm_wdg_item_data_set(data)); + WIDGET_ITEM_DATA_SET(it, data); } EOLIAN static void diff --git a/src/lib/elc_popup.c b/src/lib/elc_popup.c index 5fd5e849e..62b36508c 100644 --- a/src/lib/elc_popup.c +++ b/src/lib/elc_popup.c @@ -630,7 +630,7 @@ _item_select_cb(void *data, if (!it || it->disabled) return; if (it->func) - it->func((void *)it->base->data, WIDGET(it), EO_OBJ(it)); + it->func((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), EO_OBJ(it)); } static void @@ -1664,7 +1664,7 @@ _elm_popup_item_append(Eo *obj, Elm_Popup_Data *sd, const char *label, Evas_Obje _list_add(obj); it->func = func; - it->base->data = data; + WIDGET_ITEM_DATA_SET(EO_OBJ(it), data); _item_new(it); _item_icon_set(it, icon); diff --git a/src/lib/elm_diskselector.c b/src/lib/elm_diskselector.c index 0ff4831c1..5e34b6248 100644 --- a/src/lib/elm_diskselector.c +++ b/src/lib/elm_diskselector.c @@ -92,7 +92,7 @@ _item_select(Elm_Diskselector_Item_Data *it) sd->selected_item = it; _selected_item_indicate(sd->selected_item); - if (it->func) it->func((void *)it->base->data, WIDGET(it), EO_OBJ(it)); + if (it->func) it->func((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), EO_OBJ(it)); evas_object_smart_callback_call(WIDGET(it), SIG_SELECTED, EO_OBJ(it)); } @@ -590,7 +590,7 @@ _item_click_cb(void *data, _selected_item_indicate(sd->selected_item); } - if (it->func) it->func((void *)it->base->data, WIDGET(it), EO_OBJ(it)); + if (it->func) it->func((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), EO_OBJ(it)); evas_object_smart_callback_call(WIDGET(it), SIG_CLICKED, EO_OBJ(it)); } @@ -648,7 +648,7 @@ _item_new(Evas_Object *obj, it->label = eina_stringshare_add(label); it->func = func; - it->base->data = data; + WIDGET_ITEM_DATA_SET(EO_OBJ(it), data); VIEW(it) = edje_object_add(evas_object_evas_get(obj)); elm_widget_theme_object_set(obj, VIEW(it), "diskselector", "item", elm_widget_style_get(obj)); @@ -1174,7 +1174,7 @@ _round_items_add(Elm_Diskselector_Data *sd) { sd->first = _item_new (WIDGET(it), _icon_duplicate(it->icon), it->label, it->func, - it->base->data); + WIDGET_ITEM_DATA_GET(EO_OBJ(it))); sd->first->node = it->node; sd->r_items = eina_list_append(sd->r_items, sd->first); } @@ -1187,7 +1187,7 @@ _round_items_add(Elm_Diskselector_Data *sd) { sd->second = _item_new (WIDGET(it), _icon_duplicate(it->icon), it->label, it->func, - it->base->data); + WIDGET_ITEM_DATA_GET(EO_OBJ(it))); sd->second->node = it->node; sd->r_items = eina_list_append(sd->r_items, sd->second); } @@ -1200,7 +1200,7 @@ _round_items_add(Elm_Diskselector_Data *sd) if (!it) it = dit; temp_it = _item_new (WIDGET(it), _icon_duplicate - (it->icon), it->label, it->func, it->base->data); + (it->icon), it->label, it->func, WIDGET_ITEM_DATA_GET(EO_OBJ(it))); sd->over_items = eina_list_append(sd->over_items, temp_it); sd->r_items = eina_list_append(sd->r_items, temp_it); } @@ -1212,7 +1212,7 @@ _round_items_add(Elm_Diskselector_Data *sd) { sd->last = _item_new (WIDGET(it), _icon_duplicate(it->icon), it->label, it->func, - it->base->data); + WIDGET_ITEM_DATA_GET(EO_OBJ(it))); sd->last->node = it->node; sd->r_items = eina_list_prepend(sd->r_items, sd->last); } @@ -1224,7 +1224,7 @@ _round_items_add(Elm_Diskselector_Data *sd) { sd->s_last = _item_new (WIDGET(it), _icon_duplicate(it->icon), it->label, it->func, - it->base->data); + WIDGET_ITEM_DATA_GET(EO_OBJ(it))); sd->s_last->node = it->node; sd->r_items = eina_list_prepend(sd->r_items, sd->s_last); } @@ -1236,7 +1236,7 @@ _round_items_add(Elm_Diskselector_Data *sd) if (!it) it = dit; temp_it = _item_new (WIDGET(it), _icon_duplicate - (it->icon), it->label, it->func, it->base->data); + (it->icon), it->label, it->func, WIDGET_ITEM_DATA_GET(EO_OBJ(it))); sd->under_items = eina_list_append(sd->under_items, temp_it); sd->r_items = eina_list_prepend(sd->r_items, temp_it); } diff --git a/src/lib/elm_flipselector.c b/src/lib/elm_flipselector.c index 1bec1d26e..82c9d1247 100644 --- a/src/lib/elm_flipselector.c +++ b/src/lib/elm_flipselector.c @@ -280,7 +280,7 @@ _on_item_changed(Elm_Flipselector_Data *sd) if (sd->deleting) return; if (item->func) - item->func((void *)item->base->data, WIDGET(item), eo_item); + item->func((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(item)), WIDGET(item), eo_item); if (!item->deleted) evas_object_smart_callback_call (sd->obj, SIG_SELECTED, eo_item); @@ -374,7 +374,7 @@ _item_new(Evas_Object *obj, it->label = eina_stringshare_add_length(label, len); it->func = func; - it->base->data = data; + WIDGET_ITEM_DATA_SET(EO_OBJ(it), data); /* TODO: no view here, but if one desires general contents in the * future... */ diff --git a/src/lib/elm_gengrid.c b/src/lib/elm_gengrid.c index 4215f3f9d..a49ab8c4e 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -148,7 +148,7 @@ _elm_gengrid_search_by_text_item_get(Eo *obj EINA_UNUSED, EINA_INLIST_FOREACH(start, it) { if (!it->itc->func.text_get) continue; - str = it->itc->func.text_get((void *)it->base->data, + str = it->itc->func.text_get((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), part_name); if (!str) continue; if (!fnmatch(pattern, str, fnflags)) @@ -767,7 +767,7 @@ _access_info_cb(void *data, Evas_Object *obj EINA_UNUSED) EINA_LIST_FOREACH(it->texts, l, key) { char *s = it->itc->func.text_get - ((void *)it->base->data, WIDGET(it), key); + ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key); return s; } } @@ -871,7 +871,7 @@ _item_realize(Elm_Gen_Item *it) EINA_LIST_FOREACH(it->texts, l, key) { char *s = it->itc->func.text_get - ((void *)it->base->data, WIDGET(it), key); + ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key); if (s) { edje_object_part_text_escaped_set(VIEW(it), key, s); @@ -890,7 +890,7 @@ _item_realize(Elm_Gen_Item *it) (edje_object_data_get(VIEW(it), "contents")); EINA_LIST_FOREACH(it->contents, l, key) { - ic = it->itc->func.content_get((void *)it->base->data, WIDGET(it), key); + ic = it->itc->func.content_get((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key); if (ic) { it->content_objs = eina_list_append(it->content_objs, ic); @@ -911,7 +911,7 @@ _item_realize(Elm_Gen_Item *it) EINA_LIST_FOREACH(it->states, l, key) { Eina_Bool on = it->itc->func.state_get - ((void *)it->base->data, WIDGET(it), l->data); + ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), l->data); if (on) { snprintf(buf, sizeof(buf), "elm,state,%s,active", key); @@ -3171,7 +3171,7 @@ _elm_gengrid_item_del_not_serious(Elm_Gen_Item *it) sd->last_focused_item = NULL; if (it->itc->func.del) - it->itc->func.del((void *)it->base->data, WIDGET(it)); + it->itc->func.del((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it)); } static void @@ -3517,7 +3517,7 @@ _elm_gengrid_item_new(Elm_Gengrid_Data *sd, it->itc = itc; elm_gengrid_item_class_ref((Elm_Gengrid_Item_Class *)itc); - it->base->data = data; + WIDGET_ITEM_DATA_SET(EO_OBJ(it), data); it->parent = NULL; it->func.func = func; it->func.data = func_data; diff --git a/src/lib/elm_genlist.c b/src/lib/elm_genlist.c index 97f83b4bc..b4b6c0f18 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -286,7 +286,7 @@ _item_text_realize(Elm_Gen_Item *it, continue; char *s = it->itc->func.text_get - ((void *)it->base->data, WIDGET(it), key); + ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key); if (s) { @@ -327,7 +327,7 @@ _item_content_realize(Elm_Gen_Item *it, if (it->itc->func.content_get) ic = it->itc->func.content_get - ((void *)it->base->data, WIDGET(it), key); + ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key); if (ic) { res = eina_list_append(res, ic); @@ -364,7 +364,7 @@ _item_state_realize(Elm_Gen_Item *it, continue; Eina_Bool on = it->itc->func.state_get - ((void *)it->base->data, WIDGET(it), key); + ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key); if (on) { @@ -1497,7 +1497,7 @@ _access_info_cb(void *data, Evas_Object *obj EINA_UNUSED) EINA_LIST_FOREACH(it->texts, l, key) { char *s = it->itc->func.text_get - ((void *)it->base->data, WIDGET(it), key); + ((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), key); if (s) { @@ -3386,7 +3386,7 @@ _elm_genlist_item_del_not_serious(Elm_Gen_Item *it) sd->last_selected_item = NULL; if (it->itc->func.del) - it->itc->func.del((void *)it->base->data, WIDGET(it)); + it->itc->func.del((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it)); } static void @@ -5807,7 +5807,7 @@ _elm_genlist_item_new(Elm_Genlist_Data *sd, elm_genlist_item_class_ref((Elm_Genlist_Item_Class *)itc); ELM_GENLIST_ITEM_DATA_GET(eo_parent, parent); - it->base->data = data; + WIDGET_ITEM_DATA_SET(EO_OBJ(it), data); it->parent = parent; it->func.func = func; it->func.data = func_data; @@ -7625,7 +7625,7 @@ _elm_genlist_search_by_text_item_get(Eo *obj EINA_UNUSED, EINA_INLIST_FOREACH(start, it) { if (!it->itc->func.text_get) continue; - str = it->itc->func.text_get((void *)it->base->data, WIDGET(it), part_name); + str = it->itc->func.text_get((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), part_name); if (!str) continue; if (!fnmatch(pattern, str, fnflags)) { diff --git a/src/lib/elm_index.c b/src/lib/elm_index.c index 3797b1670..b789d8246 100644 --- a/src/lib/elm_index.c +++ b/src/lib/elm_index.c @@ -461,7 +461,7 @@ _item_new(Evas_Object *obj, if (letter) it->letter = eina_stringshare_add(letter); it->func = func; - it->base->data = data; + WIDGET_ITEM_DATA_SET(EO_OBJ(it), data); it->level = sd->level; return eo_item; @@ -479,7 +479,7 @@ _item_find(Evas_Object *obj, EINA_LIST_FOREACH(sd->items, l, eo_item) { ELM_INDEX_ITEM_DATA_GET(eo_item, it); - if (it->base->data == data) return it; + if (WIDGET_ITEM_DATA_GET(EO_OBJ(it)) == data) return it; } return NULL; } @@ -751,7 +751,7 @@ _on_mouse_up(void *data, eo_id_item = eo_item; ELM_INDEX_ITEM_DATA_GET(eo_id_item, id_item); if (id_item->func) - id_item->func((void *)id_item->base->data, WIDGET(id_item), eo_id_item); + id_item->func((void *)WIDGET_ITEM_DATA_GET(eo_id_item), WIDGET(id_item), eo_id_item); } if (!sd->autohide_disabled) elm_layout_signal_emit(data, "elm,state,inactive", "elm"); @@ -1337,10 +1337,9 @@ _elm_index_item_sorted_insert(Eo *obj, Elm_Index_Data *sd, const char *letter, E else { Elm_Object_Item *eo_p_it = eina_list_data_get(lnear); - ELM_INDEX_ITEM_DATA_GET(eo_p_it, p_it); - ELM_INDEX_ITEM_DATA_GET(eo_item, it); - if (cmp_data_func(p_it->base->data, it->base->data) >= 0) - p_it->base->data = it->base->data; + const void *item_data = WIDGET_ITEM_DATA_GET(eo_item); + if (cmp_data_func(WIDGET_ITEM_DATA_GET(eo_p_it), item_data) >= 0) + WIDGET_ITEM_DATA_SET(eo_p_it, item_data); eo_do(eo_item, elm_wdg_item_del()); eo_item = NULL; } diff --git a/src/lib/elm_list.c b/src/lib/elm_list.c index a56e40988..7d1bd9e07 100644 --- a/src/lib/elm_list.c +++ b/src/lib/elm_list.c @@ -1402,7 +1402,7 @@ call: evas_object_ref(obj); _elm_list_walk(sd); - if (it->func) it->func((void *)it->base->data, WIDGET(it), EO_OBJ(it)); + if (it->func) it->func((void *)WIDGET_ITEM_DATA_GET(EO_OBJ(it)), WIDGET(it), EO_OBJ(it)); evas_object_smart_callback_call(obj, SIG_SELECTED, EO_OBJ(it)); sd->last_selected_item = it; @@ -2185,7 +2185,7 @@ _item_new(Evas_Object *obj, it->icon = icon; it->end = end; it->func = func; - it->base->data = data; + WIDGET_ITEM_DATA_SET(EO_OBJ(it), data); VIEW(it) = edje_object_add(evas_object_evas_get(obj)); diff --git a/src/lib/elm_menu.c b/src/lib/elm_menu.c index cabe5af49..2c6093e52 100644 --- a/src/lib/elm_menu.c +++ b/src/lib/elm_menu.c @@ -443,7 +443,7 @@ void _elm_dbus_menu_item_select_cb(Elm_Object_Item *obj_item) { ELM_MENU_ITEM_DATA_GET(obj_item, item); - if (item->func) item->func((void *)(item->base->data), WIDGET(item), obj_item); + if (item->func) item->func((void *)(WIDGET_ITEM_DATA_GET(EO_OBJ(item))), WIDGET(item), obj_item); } static void @@ -461,7 +461,7 @@ _menu_item_select_cb(void *data, } else _menu_hide(WIDGET(item), NULL, NULL); - if (item->func) item->func((void *)(item->base->data), WIDGET(item), EO_OBJ(item)); + if (item->func) item->func((void *)(WIDGET_ITEM_DATA_GET(EO_OBJ(item))), WIDGET(item), EO_OBJ(item)); } static void @@ -893,7 +893,7 @@ _item_clone(Evas_Object *obj, item->icon_str, item->label, item->func, - item->base->data); + WIDGET_ITEM_DATA_GET(EO_OBJ(item))); Eina_Bool disabled = eo_do(eo_item, elm_wdg_item_disabled_get()); eo_do(new_item, elm_wdg_item_disabled_set(disabled)); @@ -991,7 +991,7 @@ _elm_menu_item_add(Eo *obj, Elm_Menu_Data *sd, Elm_Object_Item *parent, const ch ELM_MENU_ITEM_DATA_GET(eo_item, it); - it->base->data = data; + WIDGET_ITEM_DATA_SET(EO_OBJ(it), data); it->func = func; it->parent = eo_data_scope_get(parent, ELM_MENU_ITEM_CLASS); it->content = icon_obj; diff --git a/src/lib/elm_object_item.h b/src/lib/elm_object_item.h index 10555388e..f4ed72d7d 100644 --- a/src/lib/elm_object_item.h +++ b/src/lib/elm_object_item.h @@ -56,3 +56,22 @@ typedef void (*Elm_Object_Item_Signal_Cb)(void *data, Elm_Objec #define elm_object_item_domain_text_translatable_set(it, domain, translatable) elm_object_item_domain_part_text_translatable_set((it), NULL, (domain), (translatable)) +/** + * Get the data associated with an object item + * @param it The Elementary object item + * @return The data associated with @p it + * + * @note Every elm_object_item supports this API + * @ingroup General + */ +EAPI void *elm_object_item_data_get(const Elm_Object_Item *it); + +/** + * Set the data associated with an object item + * @param it The Elementary object item + * @param data The data to be associated with @p it + * + * @note Every elm_object_item supports this API + * @ingroup General + */ +EAPI void elm_object_item_data_set(Elm_Object_Item *it, void *data); diff --git a/src/lib/elm_slideshow.c b/src/lib/elm_slideshow.c index f1186d27d..4eaf7e918 100644 --- a/src/lib/elm_slideshow.c +++ b/src/lib/elm_slideshow.c @@ -417,7 +417,7 @@ _elm_slideshow_item_add(Eo *obj, Elm_Slideshow_Data *sd, const Elm_Slideshow_Ite item->itc = itc; item->l = eina_list_append(item->l, eo_item); - eo_do(eo_item, elm_wdg_item_data_set(data)); + WIDGET_ITEM_DATA_SET(eo_item, data); sd->items = eina_list_merge(sd->items, item->l); @@ -438,7 +438,7 @@ _elm_slideshow_item_sorted_insert(Eo *obj, Elm_Slideshow_Data *sd, const Elm_Sli item->itc = itc; item->l = eina_list_append(item->l, eo_item); - eo_do(eo_item, elm_wdg_item_data_set(data)); + WIDGET_ITEM_DATA_SET(eo_item, data); sd->items = eina_list_sorted_merge(sd->items, item->l, func); diff --git a/src/lib/elm_toolbar.c b/src/lib/elm_toolbar.c index e86784b6b..f0b495247 100644 --- a/src/lib/elm_toolbar.c +++ b/src/lib/elm_toolbar.c @@ -213,7 +213,7 @@ _elm_toolbar_item_menu_cb(void *data, { Elm_Toolbar_Item_Data *it = data; - if (it->func) it->func((void *)(it->base->data), WIDGET(it), EO_OBJ(it)); + if (it->func) it->func((void *)(WIDGET_ITEM_DATA_GET(EO_OBJ(it))), WIDGET(it), EO_OBJ(it)); } static void @@ -1110,7 +1110,7 @@ _item_select(Elm_Toolbar_Item_Data *it) if ((!sel) || (sd->select_mode == ELM_OBJECT_SELECT_MODE_ALWAYS)) { - if (it->func) it->func((void *)(it->base->data), WIDGET(it), EO_OBJ(it)); + if (it->func) it->func((void *)(WIDGET_ITEM_DATA_GET(EO_OBJ(it))), WIDGET(it), EO_OBJ(it)); } evas_object_smart_callback_call(obj, SIG_CLICKED, EO_OBJ(it)); evas_object_smart_callback_call(obj, SIG_SELECTED, EO_OBJ(it)); @@ -2322,7 +2322,7 @@ _item_new(Evas_Object *obj, it->func = func; it->separator = EINA_FALSE; it->object = NULL; - it->base->data = data; + WIDGET_ITEM_DATA_SET(EO_OBJ(it), data); VIEW(it) = edje_object_add(evas_object_evas_get(obj)); evas_object_data_set(VIEW(it), "item", it); @@ -3490,7 +3490,7 @@ _elm_toolbar_item_menu_get(Eo *eo_item EINA_UNUSED, Elm_Toolbar_Item_Data *item) } EOLIAN static Elm_Toolbar_Item_State * -_elm_toolbar_item_state_add(Eo *eo_item EINA_UNUSED, Elm_Toolbar_Item_Data *item, +_elm_toolbar_item_state_add(Eo *eo_item, Elm_Toolbar_Item_Data *item, const char *icon, const char *label, Evas_Smart_Cb func, @@ -3509,7 +3509,7 @@ _elm_toolbar_item_state_add(Eo *eo_item EINA_UNUSED, Elm_Toolbar_Item_Data *item { it_state = _item_state_new (item->label, item->icon_str, item->icon, item->func, - item->base->data); + WIDGET_ITEM_DATA_GET(EO_OBJ(item))); item->states = eina_list_append(item->states, it_state); item->current_state = item->states; } @@ -3527,7 +3527,7 @@ _elm_toolbar_item_state_add(Eo *eo_item EINA_UNUSED, Elm_Toolbar_Item_Data *item it_state = _item_state_new(label, icon, icon_obj, func, data); item->states = eina_list_append(item->states, it_state); item->func = _elm_toolbar_item_state_cb; - item->base->data = NULL; + WIDGET_ITEM_DATA_SET(eo_item, NULL); return it_state; @@ -3543,7 +3543,7 @@ error_state_add: } EOLIAN static Eina_Bool -_elm_toolbar_item_state_del(Eo *eo_item EINA_UNUSED, Elm_Toolbar_Item_Data *item, +_elm_toolbar_item_state_del(Eo *eo_item, Elm_Toolbar_Item_Data *item, Elm_Toolbar_Item_State *state) { Elm_Toolbar_Item_State *it_state; @@ -3569,7 +3569,7 @@ _elm_toolbar_item_state_del(Eo *eo_item EINA_UNUSED, Elm_Toolbar_Item_Data *item if (item->states && !eina_list_next(item->states)) { it_state = eina_list_data_get(item->states); - item->base->data = it_state->data; + WIDGET_ITEM_DATA_SET(eo_item, it_state->data); item->func = it_state->func; eina_stringshare_del(it_state->label); eina_stringshare_del(it_state->icon_str); diff --git a/src/lib/elm_widget.c b/src/lib/elm_widget.c index cba645372..c7a7796a2 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -4296,47 +4296,17 @@ _elm_widget_item_widget_get(Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item) return item->widget; } -/** - * @internal - * - * Set user-data in this item. - * - * User data may be used to identify this item or just store any - * application data. It is automatically given as the first parameter - * of the deletion notify callback. - * - * @param item a valid #Elm_Widget_Item to store data in. - * @param data user data to store. - * @see elm_widget_item_del_cb_set() convenience macro. - * @ingroup Widget - */ -EOLIAN static void -_elm_widget_item_data_set(Eo *eo_item EINA_UNUSED, - Elm_Widget_Item_Data *item, - const void *data) -{ - ELM_WIDGET_ITEM_CHECK_OR_RETURN(item); - ELM_WIDGET_ITEM_RETURN_IF_ONDEL(item); - if ((item->data) && (item->data != data)) - DBG("Replacing item %p data %p with %p", item, item->data, data); - item->data = data; +EAPI void +elm_object_item_data_set(Elm_Object_Item *it, void *data) +{ + WIDGET_ITEM_DATA_SET(it, data); } -/** - * @internal - * - * Retrieves user-data of this item. - * - * @param item a valid #Elm_Widget_Item to get data from. - * @see elm_widget_item_data_set() - * @ingroup Widget - */ -EOLIAN static void * -_elm_widget_item_data_get(Eo *eo_item EINA_UNUSED, Elm_Widget_Item_Data *item) +EAPI void * +elm_object_item_data_get(const Elm_Object_Item *it) { - ELM_WIDGET_ITEM_CHECK_OR_RETURN(item, NULL); - return (void *)item->data; + return (void *) WIDGET_ITEM_DATA_GET(it); } EOLIAN static void diff --git a/src/lib/elm_widget.h b/src/lib/elm_widget.h index d4aa5aca3..48561cec9 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -571,6 +571,16 @@ struct _Elm_Widget_Item_Signal_Data void *data; }; +#define WIDGET_ITEM_DATA_GET(eo_obj) \ + ({ \ + eo_do(eo_obj, eo_key_data_get("__elm_widget_item_data")); \ + }) + +#define WIDGET_ITEM_DATA_SET(eo_obj, data) \ +{ \ + eo_do(eo_obj, eo_key_data_set("__elm_widget_item_data", data, NULL)); \ +} + struct _Elm_Widget_Item_Data { /* ef1 ~~ efl, el3 ~~ elm */ diff --git a/src/lib/elm_widget_item.eo b/src/lib/elm_widget_item.eo index 7d47fe866..1c6de725c 100644 --- a/src/lib/elm_widget_item.eo +++ b/src/lib/elm_widget_item.eo @@ -3,27 +3,6 @@ class Elm_Widget_Item(Eo.Base) eo_prefix: elm_wdg_item; legacy_prefix: elm_object_item; properties { - data { - get { - /** - Get the data associated with an object item - - @note Every elm_object_item supports this API - @ingroup General - */ - } - set { - /** - Set the data associated with an object item - - @note Every elm_object_item supports this API - @ingroup General - */ - } - values { - void *data @const_set; /*@ The data associated with the item */ - } - } tooltip_window_mode { get { /** |