summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Zaoui <daniel.zaoui@samsung.com>2014-09-14 14:51:26 +0300
committerDaniel Zaoui <daniel.zaoui@samsung.com>2014-09-17 15:08:43 +0300
commitb7fecf3139745b7dbbba0b9e38adf7d8d297484e (patch)
tree16174a5abc3e8ffe96b8ce801b872eea4314b70c
parente4e229e3a6d8f26cf8955b900db9de14c8d86e86 (diff)
downloadelementary-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.c2
-rw-r--r--src/lib/elc_hoversel.c4
-rw-r--r--src/lib/elc_multibuttonentry.c7
-rw-r--r--src/lib/elc_popup.c4
-rw-r--r--src/lib/elm_diskselector.c18
-rw-r--r--src/lib/elm_flipselector.c4
-rw-r--r--src/lib/elm_gengrid.c14
-rw-r--r--src/lib/elm_genlist.c14
-rw-r--r--src/lib/elm_index.c13
-rw-r--r--src/lib/elm_list.c4
-rw-r--r--src/lib/elm_menu.c8
-rw-r--r--src/lib/elm_object_item.h19
-rw-r--r--src/lib/elm_slideshow.c4
-rw-r--r--src/lib/elm_toolbar.c16
-rw-r--r--src/lib/elm_widget.c44
-rw-r--r--src/lib/elm_widget.h10
-rw-r--r--src/lib/elm_widget_item.eo21
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 {
/**