diff options
author | Daniel Zaoui <daniel.zaoui@samsung.com> | 2014-09-14 14:51:26 +0300 |
---|---|---|
committer | Daniel Zaoui <daniel.zaoui@samsung.com> | 2014-11-12 12:03:58 +0200 |
commit | eb3896cfde8f2f47c0b3ebeb1f323c3d3c114575 (patch) | |
tree | 3299fa120cc53b4495e758811a3403b8ccbf9c1c | |
parent | 03d3ec51fea75e2ac5cc6d958961995e706d2c8e (diff) | |
download | elementary-eb3896cfde8f2f47c0b3ebeb1f323c3d3c114575.tar.gz |
Object Items: 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 | 20 | ||||
-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, 93 insertions, 114 deletions
diff --git a/src/lib/elc_fileselector.c b/src/lib/elc_fileselector.c index 350d70069..6cf4ccf64 100644 --- a/src/lib/elc_fileselector.c +++ b/src/lib/elc_fileselector.c @@ -1089,7 +1089,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 d23c909f5..7f80fea46 100644 --- a/src/lib/elc_hoversel.c +++ b/src/lib/elc_hoversel.c @@ -105,7 +105,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 64b31f45c..a69adbdfe 100644 --- a/src/lib/elc_multibuttonentry.c +++ b/src/lib/elc_multibuttonentry.c @@ -701,8 +701,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); @@ -1829,14 +1830,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 17b444b73..2db91aae8 100644 --- a/src/lib/elc_popup.c +++ b/src/lib/elc_popup.c @@ -625,7 +625,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 @@ -1658,7 +1658,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 b51beb6d0..45d4b39db 100644 --- a/src/lib/elm_diskselector.c +++ b/src/lib/elm_diskselector.c @@ -87,7 +87,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)); } @@ -585,7 +585,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)); } @@ -643,7 +643,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)); @@ -1169,7 +1169,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); } @@ -1182,7 +1182,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); } @@ -1195,7 +1195,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); } @@ -1207,7 +1207,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); } @@ -1219,7 +1219,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); } @@ -1231,7 +1231,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 63a950cd0..c45a19eb3 100644 --- a/src/lib/elm_flipselector.c +++ b/src/lib/elm_flipselector.c @@ -274,7 +274,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); @@ -368,7 +368,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 8e1315819..5c7df87fc 100644 --- a/src/lib/elm_gengrid.c +++ b/src/lib/elm_gengrid.c @@ -143,7 +143,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)) @@ -764,7 +764,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; } } @@ -868,7 +868,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); @@ -887,7 +887,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); @@ -908,7 +908,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); @@ -3163,7 +3163,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 @@ -3509,7 +3509,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 89034914c..b52ead3fd 100644 --- a/src/lib/elm_genlist.c +++ b/src/lib/elm_genlist.c @@ -281,7 +281,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) { @@ -322,7 +322,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); @@ -359,7 +359,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) { @@ -1492,7 +1492,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 @@ -5805,7 +5805,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; @@ -7623,7 +7623,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 a1846d555..c9ac28761 100644 --- a/src/lib/elm_index.c +++ b/src/lib/elm_index.c @@ -459,7 +459,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; @@ -477,7 +477,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; } @@ -749,7 +749,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"); @@ -1334,10 +1334,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 e30ca0337..3cbf451bc 100644 --- a/src/lib/elm_list.c +++ b/src/lib/elm_list.c @@ -1398,7 +1398,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 = EO_OBJ(it); @@ -2181,7 +2181,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 010f033ac..e568c68fa 100644 --- a/src/lib/elm_menu.c +++ b/src/lib/elm_menu.c @@ -451,7 +451,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 @@ -469,7 +469,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 @@ -911,7 +911,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)); @@ -1009,7 +1009,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 5846130b6..db1986222 100644 --- a/src/lib/elm_object_item.h +++ b/src/lib/elm_object_item.h @@ -57,3 +57,23 @@ 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)) #define elm_object_item_text_translatable_set(it, translatable) elm_object_item_domain_part_text_translatable_set((it), NULL, NULL, (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 66015fa77..0f950f708 100644 --- a/src/lib/elm_slideshow.c +++ b/src/lib/elm_slideshow.c @@ -411,7 +411,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); @@ -432,7 +432,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 823382de4..2a019fc2b 100644 --- a/src/lib/elm_toolbar.c +++ b/src/lib/elm_toolbar.c @@ -208,7 +208,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 @@ -1111,7 +1111,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)); @@ -2323,7 +2323,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); @@ -3491,7 +3491,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, @@ -3510,7 +3510,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; } @@ -3528,7 +3528,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; @@ -3544,7 +3544,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; @@ -3570,7 +3570,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 07deb0dd3..6d862b454 100644 --- a/src/lib/elm_widget.c +++ b/src/lib/elm_widget.c @@ -4292,47 +4292,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 9b59bbeac..ff53d6157 100644 --- a/src/lib/elm_widget.h +++ b/src/lib/elm_widget.h @@ -574,6 +574,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 { /** |