Use elm_widget_item common base.
This patch changes all Elm_*_Item to use new infrastructure of Elm_Widget_Item. This patch is basically a find-and-replace, but even that was a bit tricky since every code had different names for the same things, particularly for "view" and "widget" the names ranged from "o"/"obj" to "base"/"o", quite confusing! It is worth noting that Genlist and variants that adopted its "item class" style such as Gengrid and Slideshow already provide a "del()" callback there and I'm keeping them, however we should reconsider if it is good to remove them and use elm_widget_item_del_cb_set() instead. The drawback is that onde would have to set it, while the other is done automatically when you create the object with the class. Nonetheless this patch already introduces support to use elm_widget_item_pre_notify_del(), but it will be void in such code as nobody ever sets it. Some new setters and getters were introduced to normalize code... and they would be required once people write python-bindings for them, like index and carousel. SVN revision: 52118
This commit is contained in:
parent
b5aeff5519
commit
9ed8bf92be
|
@ -617,11 +617,11 @@ extern "C" {
|
|||
EAPI void elm_gengrid_bounce_get(const Evas_Object *obj, Eina_Bool *h_bounce, Eina_Bool *v_bounce);
|
||||
EAPI void elm_gengrid_horizontal_set(Evas_Object *obj, Eina_Bool setting);
|
||||
EAPI void elm_gengrid_clear(Evas_Object *obj);
|
||||
EAPI void *elm_gengrid_item_data_get(Elm_Gengrid_Item *item);
|
||||
EAPI void *elm_gengrid_item_data_get(const Elm_Gengrid_Item *item);
|
||||
EAPI void elm_gengrid_item_pos_get(const Elm_Gengrid_Item *item, unsigned int *x, unsigned int *y);
|
||||
EAPI void elm_gengrid_item_selected_set(Elm_Gengrid_Item *item, Eina_Bool selected);
|
||||
EAPI Eina_Bool elm_gengrid_item_selected_get(const Elm_Gengrid_Item *item);
|
||||
EAPI const Evas_Object *elm_gengrid_item_object_get(Elm_Gengrid_Item *item);
|
||||
EAPI const Evas_Object *elm_gengrid_item_object_get(const Elm_Gengrid_Item *item);
|
||||
EAPI const Eina_List *elm_gengrid_selected_items_get(const Evas_Object *obj);
|
||||
EAPI const Eina_List *elm_gengrid_items_get(const Evas_Object *obj);
|
||||
EAPI Elm_Gengrid_Item *elm_gengrid_item_append(Evas_Object *obj, const Elm_Gengrid_Item_Class *gcc, const void *data, Evas_Smart_Cb func, const void *func_data);
|
||||
|
@ -1060,7 +1060,10 @@ extern "C" {
|
|||
EAPI Evas_Object *elm_carousel_add(Evas_Object *parent);
|
||||
EAPI Elm_Carousel_Item *elm_carousel_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, Evas_Smart_Cb func, const void *data);
|
||||
EAPI void elm_carousel_item_del(Elm_Carousel_Item *item);
|
||||
|
||||
EAPI void elm_carousel_item_select(Elm_Carousel_Item *item);
|
||||
EAPI void elm_carousel_item_del_cb_set(Elm_Carousel_Item *it, Evas_Smart_Cb func);
|
||||
EAPI void *elm_carousel_item_data_get(const Elm_Carousel_Item *it);
|
||||
/* smart callbacks called:
|
||||
* "clicked" - when the user clicks on a carousel item and becomes selected
|
||||
*/
|
||||
|
@ -1341,6 +1344,7 @@ extern "C" {
|
|||
EAPI void elm_index_item_go(Evas_Object *obj, int level);
|
||||
EAPI void *elm_index_item_data_get(const Elm_Index_Item *item);
|
||||
EAPI void elm_index_item_data_set(Elm_Index_Item *it, const void *data);
|
||||
EAPI void elm_index_item_del_cb_set(Elm_Index_Item *it, Evas_Smart_Cb func);
|
||||
EAPI const char *elm_index_item_letter_get(const Elm_Index_Item *item);
|
||||
/* smart callbacks called:
|
||||
* "changed" - when the selected index item changes
|
||||
|
|
|
@ -31,14 +31,12 @@ struct _Widget_Data
|
|||
|
||||
struct _Elm_Hoversel_Item
|
||||
{
|
||||
Evas_Object *obj;
|
||||
Elm_Widget_Item base;
|
||||
const char *label;
|
||||
const char *icon_file;
|
||||
const char *icon_group;
|
||||
Elm_Icon_Type icon_type;
|
||||
Evas_Smart_Cb func;
|
||||
Evas_Smart_Cb del_cb;
|
||||
void *data;
|
||||
};
|
||||
|
||||
static const char *widtype = NULL;
|
||||
|
@ -59,11 +57,11 @@ _del_pre_hook(Evas_Object *obj)
|
|||
elm_hoversel_hover_parent_set(obj, NULL);
|
||||
EINA_LIST_FREE(wd->items, it)
|
||||
{
|
||||
if (it->del_cb) it->del_cb((void *)it->data, it->obj, it);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
eina_stringshare_del(it->label);
|
||||
eina_stringshare_del(it->icon_file);
|
||||
eina_stringshare_del(it->icon_group);
|
||||
free(it);
|
||||
elm_widget_item_del(it);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -128,10 +126,10 @@ static void
|
|||
_item_clicked(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Elm_Hoversel_Item *it = data;
|
||||
Evas_Object *obj2 = it->obj;
|
||||
Evas_Object *obj2 = it->base.widget;
|
||||
|
||||
elm_hoversel_hover_end(obj2);
|
||||
if (it->func) it->func(it->data, obj2, it);
|
||||
if (it->func) it->func((void *)it->base.data, obj2, it);
|
||||
evas_object_smart_callback_call(obj2, "selected", it);
|
||||
}
|
||||
|
||||
|
@ -520,15 +518,14 @@ elm_hoversel_item_add(Evas_Object *obj, const char *label, const char *icon_file
|
|||
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (!wd) return NULL;
|
||||
Elm_Hoversel_Item *it = calloc(1, sizeof(Elm_Hoversel_Item));
|
||||
Elm_Hoversel_Item *it = elm_widget_item_new(obj, Elm_Hoversel_Item);
|
||||
if (!it) return NULL;
|
||||
wd->items = eina_list_append(wd->items, it);
|
||||
it->obj = obj;
|
||||
it->label = eina_stringshare_add(label);
|
||||
it->icon_file = eina_stringshare_add(icon_file);
|
||||
it->icon_type = icon_type;
|
||||
it->func = func;
|
||||
it->data = (void *)data;
|
||||
it->base.data = data;
|
||||
return it;
|
||||
}
|
||||
|
||||
|
@ -547,15 +544,15 @@ EAPI void
|
|||
elm_hoversel_item_del(Elm_Hoversel_Item *it)
|
||||
{
|
||||
if (!it) return;
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
if (it->del_cb) it->del_cb((void *)it->data, it->obj, it);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
if (!wd) return;
|
||||
elm_hoversel_hover_end(it->obj);
|
||||
elm_hoversel_hover_end(it->base.widget);
|
||||
wd->items = eina_list_remove(wd->items, it);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
eina_stringshare_del(it->label);
|
||||
eina_stringshare_del(it->icon_file);
|
||||
eina_stringshare_del(it->icon_group);
|
||||
free(it);
|
||||
elm_widget_item_del(it);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -574,8 +571,7 @@ elm_hoversel_item_del(Elm_Hoversel_Item *it)
|
|||
EAPI void
|
||||
elm_hoversel_item_del_cb_set(Elm_Hoversel_Item *it, Evas_Smart_Cb func)
|
||||
{
|
||||
if (!it) return;
|
||||
it->del_cb = func;
|
||||
elm_widget_item_del_cb_set(it, func);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -590,8 +586,7 @@ elm_hoversel_item_del_cb_set(Elm_Hoversel_Item *it, Evas_Smart_Cb func)
|
|||
EAPI void *
|
||||
elm_hoversel_item_data_get(Elm_Hoversel_Item *it)
|
||||
{
|
||||
if (!it) return NULL;
|
||||
return it->data;
|
||||
return elm_widget_item_data_get(it);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,10 +14,10 @@ struct _Widget_Data
|
|||
|
||||
struct _Elm_Carousel_Item
|
||||
{
|
||||
Evas_Object *obj, *base, *icon;
|
||||
Elm_Widget_Item base;
|
||||
Evas_Object *icon;
|
||||
const char *label;
|
||||
Evas_Smart_Cb func;
|
||||
const void *data;
|
||||
Eina_Bool selected : 1;
|
||||
};
|
||||
|
||||
|
@ -29,11 +29,11 @@ static void _sizing_eval(Evas_Object *obj);
|
|||
static void
|
||||
_item_show(Elm_Carousel_Item *it)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
Evas_Coord x, y, w, h, bx, by;
|
||||
if (!wd) return;
|
||||
evas_object_geometry_get(wd->bx, &bx, &by, NULL, NULL);
|
||||
evas_object_geometry_get(it->base, &x, &y, &w, &h);
|
||||
evas_object_geometry_get(it->base.view, &x, &y, &w, &h);
|
||||
elm_smart_scroller_child_region_show(wd->scr, x - bx, y - by, w, h);
|
||||
}
|
||||
|
||||
|
@ -41,7 +41,7 @@ static void
|
|||
_item_select(Elm_Carousel_Item *it)
|
||||
{
|
||||
Elm_Carousel_Item *it2;
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
Evas_Object *obj2;
|
||||
const Eina_List *l;
|
||||
if (!wd) return;
|
||||
|
@ -51,15 +51,15 @@ _item_select(Elm_Carousel_Item *it)
|
|||
if (it2->selected)
|
||||
{
|
||||
it2->selected = EINA_FALSE;
|
||||
edje_object_signal_emit(it2->base, "elm,state,unselected", "elm");
|
||||
edje_object_signal_emit(it2->base.view, "elm,state,unselected", "elm");
|
||||
break;
|
||||
}
|
||||
}
|
||||
it->selected = EINA_TRUE;
|
||||
edje_object_signal_emit(it->base, "elm,state,selected", "elm");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
||||
_item_show(it);
|
||||
obj2 = it->obj;
|
||||
if (it->func) it->func((void *)(it->data), it->obj, it);
|
||||
obj2 = it->base.widget;
|
||||
if (it->func) it->func((void *)(it->base.data), it->base.widget, it);
|
||||
evas_object_smart_callback_call(obj2, "clicked", it);
|
||||
}
|
||||
|
||||
|
@ -83,20 +83,20 @@ _theme_hook(Evas_Object *obj)
|
|||
Evas_Coord mw, mh;
|
||||
|
||||
if (it->selected)
|
||||
edje_object_signal_emit(it->base, "elm,state,selected", "elm");
|
||||
_elm_theme_object_set(obj, it->base, "carousel", "item", elm_widget_style_get(obj));
|
||||
edje_object_scale_set(it->base, elm_widget_scale_get(obj) * _elm_config->scale);
|
||||
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
||||
_elm_theme_object_set(obj, it->base.view, "carousel", "item", elm_widget_style_get(obj));
|
||||
edje_object_scale_set(it->base.view, elm_widget_scale_get(obj) * _elm_config->scale);
|
||||
if (it->icon)
|
||||
{
|
||||
edje_extern_object_min_size_set(it->icon,
|
||||
(double)wd->icon_size * _elm_config->scale,
|
||||
(double)wd->icon_size * _elm_config->scale);
|
||||
edje_object_part_swallow(it->base, "elm.swallow.icon", it->icon);
|
||||
edje_object_part_swallow(it->base.view, "elm.swallow.icon", it->icon);
|
||||
}
|
||||
edje_object_part_text_set(it->base, "elm.text", it->label);
|
||||
edje_object_size_min_calc(it->base, &mw, &mh);
|
||||
evas_object_size_hint_min_set(it->base, mw, mh);
|
||||
evas_object_size_hint_max_set(it->base, 9999, mh);
|
||||
edje_object_part_text_set(it->base.view, "elm.text", it->label);
|
||||
edje_object_size_min_calc(it->base.view, &mw, &mh);
|
||||
evas_object_size_hint_min_set(it->base.view, mw, mh);
|
||||
evas_object_size_hint_max_set(it->base.view, 9999, mh);
|
||||
}
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
@ -200,37 +200,36 @@ elm_carousel_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, Ev
|
|||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (!wd) return NULL;
|
||||
Evas_Coord mw, mh;
|
||||
Elm_Carousel_Item *it = calloc(1, sizeof(Elm_Carousel_Item));
|
||||
Elm_Carousel_Item *it = elm_widget_item_new(obj, Elm_Carousel_Item);
|
||||
|
||||
if (!it) return NULL;
|
||||
wd->items = eina_list_append(wd->items, it);
|
||||
it->obj = obj;
|
||||
it->label = eina_stringshare_add(label);
|
||||
it->icon = icon;
|
||||
it->func = func;
|
||||
it->data = data;
|
||||
it->base = edje_object_add(evas_object_evas_get(obj));
|
||||
_elm_theme_object_set(obj, it->base, "carousel", "item", elm_widget_style_get(obj));
|
||||
edje_object_signal_callback_add(it->base, "elm,action,click", "elm",
|
||||
it->base.data = data;
|
||||
it->base.view = edje_object_add(evas_object_evas_get(obj));
|
||||
_elm_theme_object_set(obj, it->base.view, "carousel", "item", elm_widget_style_get(obj));
|
||||
edje_object_signal_callback_add(it->base.view, "elm,action,click", "elm",
|
||||
_select, it);
|
||||
elm_widget_sub_object_add(obj, it->base);
|
||||
elm_widget_sub_object_add(obj, it->base.view);
|
||||
if (it->icon)
|
||||
{
|
||||
edje_extern_object_min_size_set(it->icon,
|
||||
(double)wd->icon_size * _elm_config->scale,
|
||||
(double)wd->icon_size * _elm_config->scale);
|
||||
edje_object_part_swallow(it->base, "elm.swallow.icon", it->icon);
|
||||
edje_object_part_swallow(it->base.view, "elm.swallow.icon", it->icon);
|
||||
evas_object_show(it->icon);
|
||||
elm_widget_sub_object_add(obj, it->icon);
|
||||
}
|
||||
edje_object_part_text_set(it->base, "elm.text", it->label);
|
||||
edje_object_size_min_calc(it->base, &mw, &mh);
|
||||
evas_object_size_hint_weight_set(it->base, 0.0, 0.0);
|
||||
evas_object_size_hint_align_set(it->base, -1.0, -1.0);
|
||||
evas_object_size_hint_min_set(it->base, mw, mh);
|
||||
evas_object_size_hint_max_set(it->base, 9999, mh);
|
||||
evas_object_box_append(wd->bx, it->base);
|
||||
evas_object_show(it->base);
|
||||
edje_object_part_text_set(it->base.view, "elm.text", it->label);
|
||||
edje_object_size_min_calc(it->base.view, &mw, &mh);
|
||||
evas_object_size_hint_weight_set(it->base.view, 0.0, 0.0);
|
||||
evas_object_size_hint_align_set(it->base.view, -1.0, -1.0);
|
||||
evas_object_size_hint_min_set(it->base.view, mw, mh);
|
||||
evas_object_size_hint_max_set(it->base.view, 9999, mh);
|
||||
evas_object_box_append(wd->bx, it->base.view);
|
||||
evas_object_show(it->base.view);
|
||||
_sizing_eval(obj);
|
||||
return it;
|
||||
}
|
||||
|
@ -238,17 +237,45 @@ elm_carousel_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, Ev
|
|||
EAPI void
|
||||
elm_carousel_item_del(Elm_Carousel_Item *it)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Evas_Object *obj2 = it->obj;
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
Evas_Object *obj2 = it->base.widget;
|
||||
if (!wd) return;
|
||||
wd->items = eina_list_remove(wd->items, it);
|
||||
eina_stringshare_del(it->label);
|
||||
if (it->icon) evas_object_del(it->icon);
|
||||
evas_object_del(it->base);
|
||||
evas_object_del(it->base.view);
|
||||
free(it);
|
||||
_theme_hook(obj2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the function called when a carousel item is freed.
|
||||
*
|
||||
* @param it The item to set the callback on
|
||||
* @param func The function called
|
||||
*
|
||||
* @ingroup Carousel
|
||||
*/
|
||||
EAPI void
|
||||
elm_carousel_item_del_cb_set(Elm_Carousel_Item *it, Evas_Smart_Cb func)
|
||||
{
|
||||
elm_widget_item_del_cb_set(it, func);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the data associated with the item.
|
||||
*
|
||||
* @param it The carousel item
|
||||
* @return The data associated with @p it
|
||||
*
|
||||
* @ingroup Carousel
|
||||
*/
|
||||
EAPI void *
|
||||
elm_carousel_item_data_get(const Elm_Carousel_Item *it)
|
||||
{
|
||||
return elm_widget_item_data_get(it);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
elm_carousel_item_select(Elm_Carousel_Item *item)
|
||||
{
|
||||
|
|
|
@ -142,12 +142,12 @@ typedef struct _Pan Pan;
|
|||
|
||||
struct _Elm_Gengrid_Item
|
||||
{
|
||||
Evas_Object *base, *spacer;
|
||||
Elm_Widget_Item base;
|
||||
Evas_Object *spacer;
|
||||
const Elm_Gengrid_Item_Class *gic;
|
||||
Ecore_Timer *long_timer;
|
||||
Widget_Data *wd;
|
||||
Eina_List *labels, *icons, *states, *icon_objs;
|
||||
const void *data;
|
||||
struct
|
||||
{
|
||||
Evas_Smart_Cb func;
|
||||
|
@ -442,7 +442,7 @@ static void
|
|||
_item_hilight(Elm_Gengrid_Item *item)
|
||||
{
|
||||
if ((item->wd->no_select) || (item->delete_me) || (item->hilighted)) return;
|
||||
edje_object_signal_emit(item->base, "elm,state,selected", "elm");
|
||||
edje_object_signal_emit(item->base.view, "elm,state,selected", "elm");
|
||||
item->hilighted = EINA_TRUE;
|
||||
}
|
||||
|
||||
|
@ -453,35 +453,35 @@ _item_realize(Elm_Gengrid_Item *item)
|
|||
char style[1024];
|
||||
|
||||
if ((item->realized) || (item->delete_me)) return;
|
||||
item->base = edje_object_add(evas_object_evas_get(item->wd->self));
|
||||
edje_object_scale_set(item->base, elm_widget_scale_get(item->wd->self) *
|
||||
item->base.view = edje_object_add(evas_object_evas_get(item->wd->self));
|
||||
edje_object_scale_set(item->base.view, elm_widget_scale_get(item->wd->self) *
|
||||
_elm_config->scale);
|
||||
evas_object_smart_member_add(item->base, item->wd->pan_smart);
|
||||
elm_widget_sub_object_add(item->wd->self, item->base);
|
||||
evas_object_smart_member_add(item->base.view, item->wd->pan_smart);
|
||||
elm_widget_sub_object_add(item->wd->self, item->base.view);
|
||||
snprintf(style, sizeof(style), "item/%s",
|
||||
item->gic->item_style ? item->gic->item_style : "default");
|
||||
_elm_theme_object_set(item->wd->self, item->base, "gengrid", style,
|
||||
_elm_theme_object_set(item->wd->self, item->base.view, "gengrid", style,
|
||||
elm_widget_style_get(item->wd->self));
|
||||
item->spacer = evas_object_rectangle_add(evas_object_evas_get(item->wd->self));
|
||||
evas_object_color_set(item->spacer, 0, 0, 0, 0);
|
||||
elm_widget_sub_object_add(item->wd->self, item->spacer);
|
||||
evas_object_size_hint_min_set(item->spacer, 2 * _elm_config->scale, 1);
|
||||
edje_object_part_swallow(item->base, "elm.swallow.pad", item->spacer);
|
||||
edje_object_part_swallow(item->base.view, "elm.swallow.pad", item->spacer);
|
||||
|
||||
if (item->gic->func.label_get)
|
||||
{
|
||||
const Eina_List *l;
|
||||
const char *key;
|
||||
|
||||
item->labels = _elm_stringlist_get(edje_object_data_get(item->base,
|
||||
item->labels = _elm_stringlist_get(edje_object_data_get(item->base.view,
|
||||
"labels"));
|
||||
EINA_LIST_FOREACH(item->labels, l, key)
|
||||
{
|
||||
char *s = item->gic->func.label_get(item->data, item->wd->self,
|
||||
char *s = item->gic->func.label_get(item->base.data, item->wd->self,
|
||||
l->data);
|
||||
if (s)
|
||||
{
|
||||
edje_object_part_text_set(item->base, l->data, s);
|
||||
edje_object_part_text_set(item->base.view, l->data, s);
|
||||
free(s);
|
||||
}
|
||||
}
|
||||
|
@ -492,17 +492,17 @@ _item_realize(Elm_Gengrid_Item *item)
|
|||
const Eina_List *l;
|
||||
const char *key;
|
||||
|
||||
item->icons = _elm_stringlist_get(edje_object_data_get(item->base,
|
||||
item->icons = _elm_stringlist_get(edje_object_data_get(item->base.view,
|
||||
"icons"));
|
||||
EINA_LIST_FOREACH(item->icons, l, key)
|
||||
{
|
||||
Evas_Object *ic = item->gic->func.icon_get(item->data,
|
||||
Evas_Object *ic = item->gic->func.icon_get(item->base.data,
|
||||
item->wd->self,
|
||||
l->data);
|
||||
if (ic)
|
||||
{
|
||||
item->icon_objs = eina_list_append(item->icon_objs, ic);
|
||||
edje_object_part_swallow(item->base, key, ic);
|
||||
edje_object_part_swallow(item->base.view, key, ic);
|
||||
evas_object_show(ic);
|
||||
elm_widget_sub_object_add(item->wd->self, ic);
|
||||
}
|
||||
|
@ -514,42 +514,42 @@ _item_realize(Elm_Gengrid_Item *item)
|
|||
const Eina_List *l;
|
||||
const char *key;
|
||||
|
||||
item->states = _elm_stringlist_get(edje_object_data_get(item->base,
|
||||
item->states = _elm_stringlist_get(edje_object_data_get(item->base.view,
|
||||
"states"));
|
||||
EINA_LIST_FOREACH(item->states, l, key)
|
||||
{
|
||||
Eina_Bool on = item->gic->func.state_get(item->data,
|
||||
Eina_Bool on = item->gic->func.state_get(item->base.data,
|
||||
item->wd->self, l->data);
|
||||
if (on)
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "elm,state,%s,active", key);
|
||||
edje_object_signal_emit(item->base, buf, "elm");
|
||||
edje_object_signal_emit(item->base.view, buf, "elm");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((!item->wd->item_width) && (!item->wd->item_height))
|
||||
{
|
||||
edje_object_size_min_restricted_calc(item->base,
|
||||
edje_object_size_min_restricted_calc(item->base.view,
|
||||
&item->wd->item_width, &item->wd->item_height,
|
||||
item->wd->item_width, item->wd->item_height);
|
||||
elm_coords_finger_size_adjust(1, &item->wd->item_width,
|
||||
1, &item->wd->item_height);
|
||||
}
|
||||
|
||||
evas_object_event_callback_add(item->base, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
evas_object_event_callback_add(item->base.view, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
_mouse_down, item);
|
||||
evas_object_event_callback_add(item->base, EVAS_CALLBACK_MOUSE_UP,
|
||||
evas_object_event_callback_add(item->base.view, EVAS_CALLBACK_MOUSE_UP,
|
||||
_mouse_up, item);
|
||||
evas_object_event_callback_add(item->base, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
evas_object_event_callback_add(item->base.view, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
_mouse_move, item);
|
||||
|
||||
if (item->selected)
|
||||
edje_object_signal_emit(item->base, "elm,state,selected", "elm");
|
||||
edje_object_signal_emit(item->base.view, "elm,state,selected", "elm");
|
||||
if (item->disabled)
|
||||
edje_object_signal_emit(item->base, "elm,state,disabled", "elm");
|
||||
edje_object_signal_emit(item->base.view, "elm,state,disabled", "elm");
|
||||
|
||||
evas_object_show(item->base);
|
||||
evas_object_show(item->base.view);
|
||||
item->realized = EINA_TRUE;
|
||||
item->want_unrealize = EINA_FALSE;
|
||||
}
|
||||
|
@ -565,8 +565,8 @@ _item_unrealize(Elm_Gengrid_Item *item)
|
|||
ecore_timer_del(item->long_timer);
|
||||
item->long_timer = NULL;
|
||||
}
|
||||
evas_object_del(item->base);
|
||||
item->base = NULL;
|
||||
evas_object_del(item->base.view);
|
||||
item->base.view = NULL;
|
||||
evas_object_del(item->spacer);
|
||||
item->spacer = NULL;
|
||||
_elm_stringlist_free(item->labels);
|
||||
|
@ -644,8 +644,8 @@ _item_place(Elm_Gengrid_Item *item, Evas_Coord cx, Evas_Coord cy)
|
|||
_item_realize(item);
|
||||
if (!was_realized)
|
||||
evas_object_smart_callback_call(item->wd->self, "realized", item);
|
||||
evas_object_move(item->base, x, y);
|
||||
evas_object_resize(item->base, item->wd->item_width,
|
||||
evas_object_move(item->base.view, x, y);
|
||||
evas_object_resize(item->base.view, item->wd->item_width,
|
||||
item->wd->item_height);
|
||||
}
|
||||
else
|
||||
|
@ -657,11 +657,11 @@ _item_create(Widget_Data *wd, const Elm_Gengrid_Item_Class *gic, const void *dat
|
|||
{
|
||||
Elm_Gengrid_Item *item;
|
||||
|
||||
item = calloc(1, sizeof(*item));
|
||||
item = elm_widget_item_new(wd->self, Elm_Gengrid_Item);
|
||||
if (!item) return NULL;
|
||||
item->wd = wd;
|
||||
item->gic = gic;
|
||||
item->data = data;
|
||||
item->base.data = data;
|
||||
item->func.func = func;
|
||||
item->func.data = func_data;
|
||||
return item;
|
||||
|
@ -670,15 +670,16 @@ _item_create(Widget_Data *wd, const Elm_Gengrid_Item_Class *gic, const void *dat
|
|||
static void
|
||||
_item_del(Elm_Gengrid_Item *item)
|
||||
{
|
||||
elm_widget_item_pre_notify_del(item);
|
||||
if (item->selected)
|
||||
item->wd->selected = eina_list_remove(item->wd->selected, item);
|
||||
if (item->realized) _item_unrealize(item);
|
||||
if ((!item->delete_me) && (item->gic->func.del))
|
||||
item->gic->func.del(item->data, item->wd->self);
|
||||
item->gic->func.del(item->base.data, item->wd->self);
|
||||
item->delete_me = EINA_TRUE;
|
||||
item->wd->items = eina_list_remove(item->wd->items, item);
|
||||
if (item->long_timer) ecore_timer_del(item->long_timer);
|
||||
free(item);
|
||||
elm_widget_item_del(item);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -707,7 +708,7 @@ static void
|
|||
_item_unselect(Elm_Gengrid_Item *item)
|
||||
{
|
||||
if ((item->delete_me) || (!item->hilighted)) return;
|
||||
edje_object_signal_emit(item->base, "elm,state,unselected", "elm");
|
||||
edje_object_signal_emit(item->base.view, "elm,state,unselected", "elm");
|
||||
item->hilighted = EINA_FALSE;
|
||||
if (item->selected)
|
||||
{
|
||||
|
@ -1150,10 +1151,11 @@ elm_gengrid_item_del(Elm_Gengrid_Item *item)
|
|||
if ((item->relcount > 0) || (item->walking > 0))
|
||||
{
|
||||
item->delete_me = EINA_TRUE;
|
||||
elm_widget_item_pre_notify_del(item);
|
||||
if (item->selected)
|
||||
item->wd->selected = eina_list_remove(item->wd->selected, item);
|
||||
if (item->gic->func.del)
|
||||
item->gic->func.del(item->data, item->wd->self);
|
||||
item->gic->func.del(item->base.data, item->wd->self);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1214,11 +1216,12 @@ elm_gengrid_clear(Evas_Object *obj)
|
|||
|
||||
EINA_LIST_FOREACH_SAFE(wd->items, l, l_next, item)
|
||||
{
|
||||
if (item->realized) _item_unrealize(item);
|
||||
if (item->gic->func.del) item->gic->func.del(item->data, wd->self);
|
||||
if (item->long_timer) ecore_timer_del(item->long_timer);
|
||||
free(item);
|
||||
wd->items = eina_list_remove_list(wd->items, l);
|
||||
elm_widget_item_pre_notify_del(item);
|
||||
if (item->realized) _item_unrealize(item);
|
||||
if (item->gic->func.del) item->gic->func.del(item->base.data, wd->self);
|
||||
if (item->long_timer) ecore_timer_del(item->long_timer);
|
||||
elm_widget_item_del(item);
|
||||
}
|
||||
|
||||
if (wd->selected)
|
||||
|
@ -1253,10 +1256,10 @@ elm_gengrid_clear(Evas_Object *obj)
|
|||
* @ingroup Gengrid
|
||||
*/
|
||||
EAPI const Evas_Object *
|
||||
elm_gengrid_item_object_get(Elm_Gengrid_Item *item)
|
||||
elm_gengrid_item_object_get(const Elm_Gengrid_Item *item)
|
||||
{
|
||||
if (!item) return NULL;
|
||||
return item->base;
|
||||
return item->base.view;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1274,10 +1277,9 @@ elm_gengrid_item_object_get(Elm_Gengrid_Item *item)
|
|||
* @ingroup Gengrid
|
||||
*/
|
||||
EAPI void *
|
||||
elm_gengrid_item_data_get(Elm_Gengrid_Item *item)
|
||||
elm_gengrid_item_data_get(const Elm_Gengrid_Item *item)
|
||||
{
|
||||
if (!item) return NULL;
|
||||
return (void *)item->data;
|
||||
return elm_widget_item_data_get(item);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1455,9 +1457,9 @@ elm_gengrid_item_disabled_set(Elm_Gengrid_Item *item, Eina_Bool disabled)
|
|||
if (item->realized)
|
||||
{
|
||||
if (item->disabled)
|
||||
edje_object_signal_emit(item->base, "elm,state,disabled", "elm");
|
||||
edje_object_signal_emit(item->base.view, "elm,state,disabled", "elm");
|
||||
else
|
||||
edje_object_signal_emit(item->base, "elm,state,enabled", "elm");
|
||||
edje_object_signal_emit(item->base.view, "elm,state,enabled", "elm");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -287,13 +287,13 @@ struct _Item_Block
|
|||
|
||||
struct _Elm_Genlist_Item
|
||||
{
|
||||
Elm_Widget_Item base;
|
||||
EINA_INLIST;
|
||||
Widget_Data *wd;
|
||||
Item_Block *block;
|
||||
Eina_List *items;
|
||||
Evas_Coord x, y, w, h, minw, minh;
|
||||
const Elm_Genlist_Item_Class *itc;
|
||||
const void *data;
|
||||
Elm_Genlist_Item *parent;
|
||||
Elm_Genlist_Item_Flags flags;
|
||||
struct
|
||||
|
@ -302,7 +302,7 @@ struct _Elm_Genlist_Item
|
|||
const void *data;
|
||||
} func;
|
||||
|
||||
Evas_Object *base, *spacer;
|
||||
Evas_Object *spacer;
|
||||
Eina_List *labels, *icons, *states, *icon_objs;
|
||||
Ecore_Timer *long_timer;
|
||||
Evas_Coord dx, dy;
|
||||
|
@ -436,10 +436,10 @@ _item_hilight(Elm_Genlist_Item *it)
|
|||
{
|
||||
const char *selectraise;
|
||||
if ((it->wd->no_select) || (it->delete_me) || (it->hilighted)) return;
|
||||
edje_object_signal_emit(it->base, "elm,state,selected", "elm");
|
||||
selectraise = edje_object_data_get(it->base, "selectraise");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
||||
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
||||
if ((selectraise) && (!strcmp(selectraise, "on")))
|
||||
evas_object_raise(it->base);
|
||||
evas_object_raise(it->base.view);
|
||||
it->hilighted = EINA_TRUE;
|
||||
}
|
||||
|
||||
|
@ -510,6 +510,7 @@ _item_block_del(Elm_Genlist_Item *it)
|
|||
static void
|
||||
_item_del(Elm_Genlist_Item *it)
|
||||
{
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
elm_genlist_item_subitems_clear(it);
|
||||
it->wd->walking -= it->walking;
|
||||
if (it->wd->show_item == it) it->wd->show_item = NULL;
|
||||
|
@ -517,7 +518,7 @@ _item_del(Elm_Genlist_Item *it)
|
|||
if (it->realized) _item_unrealize(it);
|
||||
if (it->block) _item_block_del(it);
|
||||
if ((!it->delete_me) && (it->itc->func.del))
|
||||
it->itc->func.del(it->data, it->wd->obj);
|
||||
it->itc->func.del(it->base.data, it->base.widget);
|
||||
it->delete_me = EINA_TRUE;
|
||||
if (it->queued)
|
||||
it->wd->queue = eina_list_remove(it->wd->queue, it);
|
||||
|
@ -525,7 +526,7 @@ _item_del(Elm_Genlist_Item *it)
|
|||
if (it->parent)
|
||||
it->parent->items = eina_list_remove(it->parent->items, it);
|
||||
if (it->long_timer) ecore_timer_del(it->long_timer);
|
||||
free(it);
|
||||
elm_widget_item_del(it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -542,13 +543,13 @@ _item_select(Elm_Genlist_Item *it)
|
|||
call:
|
||||
it->walking++;
|
||||
it->wd->walking++;
|
||||
if (it->func.func) it->func.func((void *)it->func.data, it->wd->obj, it);
|
||||
if (it->func.func) it->func.func((void *)it->func.data, it->base.widget, it);
|
||||
if (!it->delete_me)
|
||||
evas_object_smart_callback_call(it->wd->obj, "selected", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "selected", it);
|
||||
it->walking--;
|
||||
it->wd->walking--;
|
||||
if ((it->wd->clear_me) && (it->wd->walking == 0))
|
||||
elm_genlist_clear(it->wd->obj);
|
||||
elm_genlist_clear(it->base.widget);
|
||||
else
|
||||
{
|
||||
if ((it->walking == 0) && (it->delete_me))
|
||||
|
@ -564,20 +565,20 @@ _item_unselect(Elm_Genlist_Item *it)
|
|||
const char *stacking, *selectraise;
|
||||
|
||||
if ((it->delete_me) || (!it->hilighted)) return;
|
||||
edje_object_signal_emit(it->base, "elm,state,unselected", "elm");
|
||||
stacking = edje_object_data_get(it->base, "stacking");
|
||||
selectraise = edje_object_data_get(it->base, "selectraise");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,unselected", "elm");
|
||||
stacking = edje_object_data_get(it->base.view, "stacking");
|
||||
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
||||
if ((selectraise) && (!strcmp(selectraise, "on")))
|
||||
{
|
||||
if ((stacking) && (!strcmp(stacking, "below")))
|
||||
evas_object_lower(it->base);
|
||||
evas_object_lower(it->base.view);
|
||||
}
|
||||
it->hilighted = EINA_FALSE;
|
||||
if (it->selected)
|
||||
{
|
||||
it->selected = EINA_FALSE;
|
||||
it->wd->selected = eina_list_remove(it->wd->selected, it);
|
||||
evas_object_smart_callback_call(it->wd->obj, "unselected", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "unselected", it);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -604,7 +605,7 @@ _mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_inf
|
|||
ecore_timer_del(it->long_timer);
|
||||
it->long_timer = NULL;
|
||||
}
|
||||
evas_object_smart_callback_call(it->wd->obj, "drag", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "drag", it);
|
||||
return;
|
||||
}
|
||||
if ((!it->down)/* || (it->wd->on_hold)*/ || (it->wd->longpressed))
|
||||
|
@ -642,29 +643,29 @@ _mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_inf
|
|||
if (dy < 0)
|
||||
{
|
||||
if (ady > adx)
|
||||
evas_object_smart_callback_call(it->wd->obj, "drag,start,up", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "drag,start,up", it);
|
||||
else
|
||||
{
|
||||
if (dx < 0)
|
||||
evas_object_smart_callback_call(it->wd->obj,
|
||||
evas_object_smart_callback_call(it->base.widget,
|
||||
"drag,start,left", it);
|
||||
else
|
||||
evas_object_smart_callback_call(it->wd->obj,
|
||||
evas_object_smart_callback_call(it->base.widget,
|
||||
"drag,start,right", it);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (ady > adx)
|
||||
evas_object_smart_callback_call(it->wd->obj,
|
||||
evas_object_smart_callback_call(it->base.widget,
|
||||
"drag,start,down", it);
|
||||
else
|
||||
{
|
||||
if (dx < 0)
|
||||
evas_object_smart_callback_call(it->wd->obj,
|
||||
evas_object_smart_callback_call(it->base.widget,
|
||||
"drag,start,left", it);
|
||||
else
|
||||
evas_object_smart_callback_call(it->wd->obj,
|
||||
evas_object_smart_callback_call(it->base.widget,
|
||||
"drag,start,right", it);
|
||||
}
|
||||
}
|
||||
|
@ -679,7 +680,7 @@ _long_press(void *data)
|
|||
it->long_timer = NULL;
|
||||
if ((it->disabled) || (it->dragging)) return ECORE_CALLBACK_CANCEL;
|
||||
it->wd->longpressed = EINA_TRUE;
|
||||
evas_object_smart_callback_call(it->wd->obj, "longpressed", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "longpressed", it);
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
|
@ -703,7 +704,7 @@ _mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_inf
|
|||
it->wd->wasselected = it->selected;
|
||||
_item_hilight(it);
|
||||
if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
|
||||
evas_object_smart_callback_call(it->wd->obj, "clicked", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "clicked", it);
|
||||
if (it->long_timer) ecore_timer_del(it->long_timer);
|
||||
if (it->realized)
|
||||
it->long_timer = ecore_timer_add(it->wd->longpress_timeout, _long_press, it);
|
||||
|
@ -730,7 +731,7 @@ _mouse_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *
|
|||
if (it->dragging)
|
||||
{
|
||||
it->dragging = 0;
|
||||
evas_object_smart_callback_call(it->wd->obj, "drag,stop", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "drag,stop", it);
|
||||
dragged = 1;
|
||||
}
|
||||
if (it->wd->on_hold)
|
||||
|
@ -797,9 +798,9 @@ _signal_expand_toggle(void *data, Evas_Object *obj __UNUSED__, const char *emiss
|
|||
Elm_Genlist_Item *it = data;
|
||||
|
||||
if (it->expanded)
|
||||
evas_object_smart_callback_call(it->wd->obj, "contract,request", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "contract,request", it);
|
||||
else
|
||||
evas_object_smart_callback_call(it->wd->obj, "expand,request", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "expand,request", it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -808,7 +809,7 @@ _signal_expand(void *data, Evas_Object *obj __UNUSED__, const char *emission __U
|
|||
Elm_Genlist_Item *it = data;
|
||||
|
||||
if (!it->expanded)
|
||||
evas_object_smart_callback_call(it->wd->obj, "expand,request", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "expand,request", it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -817,7 +818,7 @@ _signal_contract(void *data, Evas_Object *obj __UNUSED__, const char *emission _
|
|||
Elm_Genlist_Item *it = data;
|
||||
|
||||
if (it->expanded)
|
||||
evas_object_smart_callback_call(it->wd->obj, "contract,request", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "contract,request", it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -830,11 +831,11 @@ _item_realize(Elm_Genlist_Item *it, int in, int calc)
|
|||
int depth, tsize = 20;
|
||||
|
||||
if ((it->realized) || (it->delete_me)) return;
|
||||
it->base = edje_object_add(evas_object_evas_get(it->wd->obj));
|
||||
edje_object_scale_set(it->base, elm_widget_scale_get(it->wd->obj) *
|
||||
it->base.view = edje_object_add(evas_object_evas_get(it->base.widget));
|
||||
edje_object_scale_set(it->base.view, elm_widget_scale_get(it->base.widget) *
|
||||
_elm_config->scale);
|
||||
evas_object_smart_member_add(it->base, it->wd->pan_smart);
|
||||
elm_widget_sub_object_add(it->wd->obj, it->base);
|
||||
evas_object_smart_member_add(it->base.view, it->wd->pan_smart);
|
||||
elm_widget_sub_object_add(it->base.widget, it->base.view);
|
||||
|
||||
if (it->flags & ELM_GENLIST_ITEM_SUBITEMS) strncpy(buf, "tree", sizeof(buf));
|
||||
else strncpy(buf, "item", sizeof(buf));
|
||||
|
@ -844,42 +845,42 @@ _item_realize(Elm_Genlist_Item *it, int in, int calc)
|
|||
strncat(buf, "/", sizeof(buf) - strlen(buf));
|
||||
strncat(buf, it->itc->item_style, sizeof(buf) - strlen(buf));
|
||||
|
||||
_elm_theme_object_set(it->wd->obj, it->base, "genlist", buf, elm_widget_style_get(it->wd->obj));
|
||||
it->spacer = evas_object_rectangle_add(evas_object_evas_get(it->wd->obj));
|
||||
_elm_theme_object_set(it->base.widget, it->base.view, "genlist", buf, elm_widget_style_get(it->base.widget));
|
||||
it->spacer = evas_object_rectangle_add(evas_object_evas_get(it->base.widget));
|
||||
evas_object_color_set(it->spacer, 0, 0, 0, 0);
|
||||
elm_widget_sub_object_add(it->wd->obj, it->spacer);
|
||||
elm_widget_sub_object_add(it->base.widget, it->spacer);
|
||||
for (it2 = it, depth = 0; it2->parent; it2 = it2->parent) depth += 1;
|
||||
treesize = edje_object_data_get(it->base, "treesize");
|
||||
treesize = edje_object_data_get(it->base.view, "treesize");
|
||||
if (treesize) tsize = atoi(treesize);
|
||||
evas_object_size_hint_min_set(it->spacer,
|
||||
(depth * tsize) * _elm_config->scale, 1);
|
||||
edje_object_part_swallow(it->base, "elm.swallow.pad", it->spacer);
|
||||
edje_object_part_swallow(it->base.view, "elm.swallow.pad", it->spacer);
|
||||
if (!calc)
|
||||
{
|
||||
edje_object_signal_callback_add(it->base, "elm,action,expand,toggle",
|
||||
edje_object_signal_callback_add(it->base.view, "elm,action,expand,toggle",
|
||||
"elm", _signal_expand_toggle, it);
|
||||
edje_object_signal_callback_add(it->base, "elm,action,expand", "elm",
|
||||
edje_object_signal_callback_add(it->base.view, "elm,action,expand", "elm",
|
||||
_signal_expand, it);
|
||||
edje_object_signal_callback_add(it->base, "elm,action,contract",
|
||||
edje_object_signal_callback_add(it->base.view, "elm,action,contract",
|
||||
"elm", _signal_contract, it);
|
||||
stacking = edje_object_data_get(it->base, "stacking");
|
||||
stacking = edje_object_data_get(it->base.view, "stacking");
|
||||
if (stacking)
|
||||
{
|
||||
if (!strcmp(stacking, "below")) evas_object_lower(it->base);
|
||||
else if (!strcmp(stacking, "above")) evas_object_raise(it->base);
|
||||
if (!strcmp(stacking, "below")) evas_object_lower(it->base.view);
|
||||
else if (!strcmp(stacking, "above")) evas_object_raise(it->base.view);
|
||||
}
|
||||
evas_object_event_callback_add(it->base, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
_mouse_down, it);
|
||||
evas_object_event_callback_add(it->base, EVAS_CALLBACK_MOUSE_UP,
|
||||
evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOUSE_UP,
|
||||
_mouse_up, it);
|
||||
evas_object_event_callback_add(it->base, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
_mouse_move, it);
|
||||
if (it->selected)
|
||||
edje_object_signal_emit(it->base, "elm,state,selected", "elm");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
||||
if (it->disabled)
|
||||
edje_object_signal_emit(it->base, "elm,state,disabled", "elm");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,disabled", "elm");
|
||||
if (it->expanded)
|
||||
edje_object_signal_emit(it->base, "elm,state,expanded", "elm");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,expanded", "elm");
|
||||
}
|
||||
|
||||
if (calc && it->wd->homogeneous && it->wd->item_width)
|
||||
|
@ -899,14 +900,14 @@ _item_realize(Elm_Genlist_Item *it, int in, int calc)
|
|||
const Eina_List *l;
|
||||
const char *key;
|
||||
|
||||
it->labels = _elm_stringlist_get(edje_object_data_get(it->base, "labels"));
|
||||
it->labels = _elm_stringlist_get(edje_object_data_get(it->base.view, "labels"));
|
||||
EINA_LIST_FOREACH(it->labels, l, key)
|
||||
{
|
||||
char *s = it->itc->func.label_get(it->data, it->wd->obj, l->data);
|
||||
char *s = it->itc->func.label_get(it->base.data, it->base.widget, l->data);
|
||||
|
||||
if (s)
|
||||
{
|
||||
edje_object_part_text_set(it->base, l->data, s);
|
||||
edje_object_part_text_set(it->base.view, l->data, s);
|
||||
free(s);
|
||||
}
|
||||
}
|
||||
|
@ -916,17 +917,17 @@ _item_realize(Elm_Genlist_Item *it, int in, int calc)
|
|||
const Eina_List *l;
|
||||
const char *key;
|
||||
|
||||
it->icons = _elm_stringlist_get(edje_object_data_get(it->base, "icons"));
|
||||
it->icons = _elm_stringlist_get(edje_object_data_get(it->base.view, "icons"));
|
||||
EINA_LIST_FOREACH(it->icons, l, key)
|
||||
{
|
||||
Evas_Object *ic = it->itc->func.icon_get(it->data, it->wd->obj, l->data);
|
||||
Evas_Object *ic = it->itc->func.icon_get(it->base.data, it->base.widget, l->data);
|
||||
|
||||
if (ic)
|
||||
{
|
||||
it->icon_objs = eina_list_append(it->icon_objs, ic);
|
||||
edje_object_part_swallow(it->base, key, ic);
|
||||
edje_object_part_swallow(it->base.view, key, ic);
|
||||
evas_object_show(ic);
|
||||
elm_widget_sub_object_add(it->wd->obj, ic);
|
||||
elm_widget_sub_object_add(it->base.widget, ic);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -935,15 +936,15 @@ _item_realize(Elm_Genlist_Item *it, int in, int calc)
|
|||
const Eina_List *l;
|
||||
const char *key;
|
||||
|
||||
it->states = _elm_stringlist_get(edje_object_data_get(it->base, "states"));
|
||||
it->states = _elm_stringlist_get(edje_object_data_get(it->base.view, "states"));
|
||||
EINA_LIST_FOREACH(it->states, l, key)
|
||||
{
|
||||
Eina_Bool on = it->itc->func.state_get(it->data, it->wd->obj, l->data);
|
||||
Eina_Bool on = it->itc->func.state_get(it->base.data, it->base.widget, l->data);
|
||||
|
||||
if (on)
|
||||
{
|
||||
snprintf(buf, sizeof(buf), "elm,state,%s,active", key);
|
||||
edje_object_signal_emit(it->base, buf, "elm");
|
||||
edje_object_signal_emit(it->base.view, buf, "elm");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -953,7 +954,7 @@ _item_realize(Elm_Genlist_Item *it, int in, int calc)
|
|||
|
||||
if (!it->display_only)
|
||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||
edje_object_size_min_restricted_calc(it->base, &mw, &mh, mw, mh);
|
||||
edje_object_size_min_restricted_calc(it->base.view, &mw, &mh, mw, mh);
|
||||
if (!it->display_only)
|
||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||
it->w = it->minw = mw;
|
||||
|
@ -966,7 +967,7 @@ _item_realize(Elm_Genlist_Item *it, int in, int calc)
|
|||
it->wd->item_height = mh;
|
||||
}
|
||||
}
|
||||
if (!calc) evas_object_show(it->base);
|
||||
if (!calc) evas_object_show(it->base.view);
|
||||
}
|
||||
it->realized = EINA_TRUE;
|
||||
it->want_unrealize = EINA_FALSE;
|
||||
|
@ -983,8 +984,8 @@ _item_unrealize(Elm_Genlist_Item *it)
|
|||
ecore_timer_del(it->long_timer);
|
||||
it->long_timer = NULL;
|
||||
}
|
||||
evas_object_del(it->base);
|
||||
it->base = NULL;
|
||||
evas_object_del(it->base.view);
|
||||
it->base.view = NULL;
|
||||
evas_object_del(it->spacer);
|
||||
it->spacer = NULL;
|
||||
_elm_stringlist_free(it->labels);
|
||||
|
@ -1038,7 +1039,7 @@ _item_block_recalc(Item_Block *itb, int in, int qadd, int norender)
|
|||
|
||||
_item_realize(it, in, 0);
|
||||
if (!was_realized)
|
||||
evas_object_smart_callback_call(it->wd->obj, "realized", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "realized", it);
|
||||
}
|
||||
minh += it->minh;
|
||||
if (minw < it->minw) minw = it->minw;
|
||||
|
@ -1071,7 +1072,7 @@ _item_block_realize(Item_Block *itb, int in, int full)
|
|||
|
||||
_item_realize(it, in, 0);
|
||||
if (!was_realized)
|
||||
evas_object_smart_callback_call(it->wd->obj, "realized", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "realized", it);
|
||||
}
|
||||
in++;
|
||||
}
|
||||
|
@ -1134,7 +1135,7 @@ _item_block_position(Item_Block *itb, int in)
|
|||
|
||||
_item_realize(it, in, 0);
|
||||
if (!was_realized)
|
||||
evas_object_smart_callback_call(it->wd->obj,
|
||||
evas_object_smart_callback_call(it->base.widget,
|
||||
"realized", it);
|
||||
}
|
||||
}
|
||||
|
@ -1142,11 +1143,11 @@ _item_block_position(Item_Block *itb, int in)
|
|||
{
|
||||
if (vis)
|
||||
{
|
||||
evas_object_resize(it->base, it->w, it->h);
|
||||
evas_object_move(it->base,
|
||||
evas_object_resize(it->base.view, it->w, it->h);
|
||||
evas_object_move(it->base.view,
|
||||
ox + itb->x + it->x - itb->wd->pan_x,
|
||||
oy + itb->y + it->y - itb->wd->pan_y);
|
||||
evas_object_show(it->base);
|
||||
evas_object_show(it->base.view);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1279,7 +1280,7 @@ _update_job(void *data)
|
|||
{
|
||||
_item_unrealize(it);
|
||||
_item_realize(it, num, 0);
|
||||
evas_object_smart_callback_call(it->wd->obj,
|
||||
evas_object_smart_callback_call(it->base.widget,
|
||||
"realized", it);
|
||||
}
|
||||
else
|
||||
|
@ -1556,11 +1557,11 @@ _item_new(Widget_Data *wd, const Elm_Genlist_Item_Class *itc,
|
|||
{
|
||||
Elm_Genlist_Item *it;
|
||||
|
||||
it = calloc(1, sizeof(Elm_Genlist_Item));
|
||||
it = elm_widget_item_new(wd->obj, Elm_Genlist_Item);
|
||||
if (!it) return NULL;
|
||||
it->wd = wd;
|
||||
it->itc = itc;
|
||||
it->data = data;
|
||||
it->base.data = data;
|
||||
it->parent = parent;
|
||||
it->flags = flags;
|
||||
it->func.func = func;
|
||||
|
@ -1988,10 +1989,11 @@ elm_genlist_clear(Evas_Object *obj)
|
|||
Elm_Genlist_Item *it = ELM_GENLIST_ITEM_FROM_INLIST(wd->items);
|
||||
|
||||
wd->items = eina_inlist_remove(wd->items, wd->items);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
if (it->realized) _item_unrealize(it);
|
||||
if (it->itc->func.del) it->itc->func.del(it->data, it->wd->obj);
|
||||
if (it->itc->func.del) it->itc->func.del(it->base.data, it->base.widget);
|
||||
if (it->long_timer) ecore_timer_del(it->long_timer);
|
||||
free(it);
|
||||
elm_widget_item_del(it);
|
||||
}
|
||||
while (wd->blocks)
|
||||
{
|
||||
|
@ -2330,7 +2332,7 @@ EAPI Evas_Object *
|
|||
elm_genlist_item_genlist_get(const Elm_Genlist_Item *it)
|
||||
{
|
||||
if (!it) return NULL;
|
||||
return it->wd->obj;
|
||||
return it->base.widget;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2387,7 +2389,7 @@ elm_genlist_item_subitems_clear(Elm_Genlist_Item *it)
|
|||
EAPI void
|
||||
elm_genlist_item_selected_set(Elm_Genlist_Item *it, Eina_Bool selected)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->wd->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
if (!wd) return;
|
||||
if (!it) return;
|
||||
if (it->delete_me) return;
|
||||
|
@ -2445,14 +2447,14 @@ elm_genlist_item_expanded_set(Elm_Genlist_Item *it, Eina_Bool expanded)
|
|||
if (it->expanded)
|
||||
{
|
||||
if (it->realized)
|
||||
edje_object_signal_emit(it->base, "elm,state,expanded", "elm");
|
||||
evas_object_smart_callback_call(it->wd->obj, "expanded", it);
|
||||
edje_object_signal_emit(it->base.view, "elm,state,expanded", "elm");
|
||||
evas_object_smart_callback_call(it->base.widget, "expanded", it);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (it->realized)
|
||||
edje_object_signal_emit(it->base, "elm,state,contracted", "elm");
|
||||
evas_object_smart_callback_call(it->wd->obj, "contracted", it);
|
||||
edje_object_signal_emit(it->base.view, "elm,state,contracted", "elm");
|
||||
evas_object_smart_callback_call(it->base.widget, "contracted", it);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2495,9 +2497,9 @@ elm_genlist_item_disabled_set(Elm_Genlist_Item *it, Eina_Bool disabled)
|
|||
if (it->realized)
|
||||
{
|
||||
if (it->disabled)
|
||||
edje_object_signal_emit(it->base, "elm,state,disabled", "elm");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,disabled", "elm");
|
||||
else
|
||||
edje_object_signal_emit(it->base, "elm,state,enabled", "elm");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,enabled", "elm");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2794,6 +2796,7 @@ elm_genlist_item_del(Elm_Genlist_Item *it)
|
|||
if (!it) return;
|
||||
if ((it->relcount > 0) || (it->walking > 0))
|
||||
{
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
elm_genlist_item_subitems_clear(it);
|
||||
it->delete_me = EINA_TRUE;
|
||||
if (it->wd->show_item == it) it->wd->show_item = NULL;
|
||||
|
@ -2805,7 +2808,7 @@ elm_genlist_item_del(Elm_Genlist_Item *it)
|
|||
if (it->wd->calc_job) ecore_job_del(it->wd->calc_job);
|
||||
it->wd->calc_job = ecore_job_add(_calc_job, it->wd);
|
||||
}
|
||||
if (it->itc->func.del) it->itc->func.del(it->data, it->wd->obj);
|
||||
if (it->itc->func.del) it->itc->func.del(it->base.data, it->base.widget);
|
||||
return;
|
||||
}
|
||||
_item_del(it);
|
||||
|
@ -2827,8 +2830,7 @@ elm_genlist_item_del(Elm_Genlist_Item *it)
|
|||
EAPI void
|
||||
elm_genlist_item_data_set(Elm_Genlist_Item *it, const void *data)
|
||||
{
|
||||
if (!it) return;
|
||||
it->data = data;
|
||||
elm_widget_item_data_set(it, data);
|
||||
elm_genlist_item_update(it);
|
||||
}
|
||||
|
||||
|
@ -2846,8 +2848,7 @@ elm_genlist_item_data_set(Elm_Genlist_Item *it, const void *data)
|
|||
EAPI const void *
|
||||
elm_genlist_item_data_get(const Elm_Genlist_Item *it)
|
||||
{
|
||||
if (!it) return NULL;
|
||||
return it->data;
|
||||
return elm_widget_item_data_get(it);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -2869,7 +2870,7 @@ EAPI const Evas_Object *
|
|||
elm_genlist_item_object_get(const Elm_Genlist_Item *it)
|
||||
{
|
||||
if (!it) return NULL;
|
||||
return it->base;
|
||||
return it->base.view;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -27,11 +27,9 @@ struct _Widget_Data
|
|||
|
||||
struct _Elm_Index_Item
|
||||
{
|
||||
Evas_Object *obj;
|
||||
Elm_Widget_Item base;
|
||||
const char *letter;
|
||||
const void *data;
|
||||
int level;
|
||||
Evas_Object *base;
|
||||
Eina_Bool selected : 1;
|
||||
};
|
||||
|
||||
|
@ -169,11 +167,10 @@ _item_new(Evas_Object *obj, const char *letter, const void *item)
|
|||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
Elm_Index_Item *it;
|
||||
if (!wd) return NULL;
|
||||
it = calloc(1, sizeof(Elm_Index_Item));
|
||||
it = elm_widget_item_new(obj, Elm_Index_Item);
|
||||
if (!it) return NULL;
|
||||
it->obj = obj;
|
||||
it->letter = eina_stringshare_add(letter);
|
||||
it->data = item;
|
||||
it->base.data = item;
|
||||
it->level = wd->level;
|
||||
return it;
|
||||
}
|
||||
|
@ -186,19 +183,19 @@ _item_find(Evas_Object *obj, const void *item)
|
|||
Elm_Index_Item *it;
|
||||
if (!wd) return NULL;
|
||||
EINA_LIST_FOREACH(wd->items, l, it)
|
||||
if (it->data == item) return it;
|
||||
if (it->base.data == item) return it;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_item_free(Elm_Index_Item *it)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
if (!wd) return;
|
||||
wd->items = eina_list_remove(wd->items, it);
|
||||
if (it->base) evas_object_del(it->base);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
eina_stringshare_del(it->letter);
|
||||
free(it);
|
||||
elm_widget_item_del(it);
|
||||
}
|
||||
|
||||
// FIXME: always have index filled
|
||||
|
@ -220,7 +217,7 @@ _index_box_auto_fill(Evas_Object *obj, Evas_Object *box, int level)
|
|||
|
||||
if (it->level != level) continue;
|
||||
o = edje_object_add(evas_object_evas_get(obj));
|
||||
it->base = o;
|
||||
it->base.view = o;
|
||||
if (i & 0x1)
|
||||
_elm_theme_object_set(obj, o, "index", "item_odd/vertical", elm_widget_style_get(obj));
|
||||
else
|
||||
|
@ -265,10 +262,10 @@ _index_box_clear(Evas_Object *obj, Evas_Object *box __UNUSED__, int level)
|
|||
if (!wd->level_active[level]) return;
|
||||
EINA_LIST_FOREACH(wd->items, l, it)
|
||||
{
|
||||
if (!it->base) continue;
|
||||
if (!it->base.view) continue;
|
||||
if (it->level != level) continue;
|
||||
evas_object_del(it->base);
|
||||
it->base = 0;
|
||||
evas_object_del(it->base.view);
|
||||
it->base.view = NULL;
|
||||
}
|
||||
wd->level_active[level] = 0;
|
||||
}
|
||||
|
@ -306,8 +303,8 @@ _sel_eval(Evas_Object *obj, Evas_Coord evx, Evas_Coord evy)
|
|||
evas_object_geometry_get(wd->bx[i], &bx, &by, &bw, &bh);
|
||||
EINA_LIST_FOREACH(wd->items, l, it)
|
||||
{
|
||||
if (!((it->level == i) && (it->base))) continue;
|
||||
if ((it->base) && (it->level != wd->level))
|
||||
if (!((it->level == i) && (it->base.view))) continue;
|
||||
if ((it->base.view) && (it->level != wd->level))
|
||||
{
|
||||
if (it->selected)
|
||||
{
|
||||
|
@ -321,7 +318,7 @@ _sel_eval(Evas_Object *obj, Evas_Coord evx, Evas_Coord evy)
|
|||
it_last = it;
|
||||
it->selected = 0;
|
||||
}
|
||||
evas_object_geometry_get(it->base, &x, &y, &w, &h);
|
||||
evas_object_geometry_get(it->base.view, &x, &y, &w, &h);
|
||||
xx = x + (w / 2);
|
||||
yy = y + (h / 2);
|
||||
x = evx - xx;
|
||||
|
@ -349,13 +346,13 @@ _sel_eval(Evas_Object *obj, Evas_Coord evx, Evas_Coord evy)
|
|||
const char *stacking, *selectraise;
|
||||
|
||||
it = it_last;
|
||||
edje_object_signal_emit(it->base, "elm,state,inactive", "elm");
|
||||
stacking = edje_object_data_get(it->base, "stacking");
|
||||
selectraise = edje_object_data_get(it->base, "selectraise");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,inactive", "elm");
|
||||
stacking = edje_object_data_get(it->base.view, "stacking");
|
||||
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
||||
if ((selectraise) && (!strcmp(selectraise, "on")))
|
||||
{
|
||||
if ((stacking) && (!strcmp(stacking, "below")))
|
||||
evas_object_lower(it->base);
|
||||
evas_object_lower(it->base.view);
|
||||
}
|
||||
}
|
||||
if (it_closest)
|
||||
|
@ -363,11 +360,11 @@ _sel_eval(Evas_Object *obj, Evas_Coord evx, Evas_Coord evy)
|
|||
const char *selectraise;
|
||||
|
||||
it = it_closest;
|
||||
edje_object_signal_emit(it->base, "elm,state,active", "elm");
|
||||
selectraise = edje_object_data_get(it->base, "selectraise");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,active", "elm");
|
||||
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
||||
if ((selectraise) && (!strcmp(selectraise, "on")))
|
||||
evas_object_raise(it->base);
|
||||
evas_object_smart_callback_call((void *)obj, "changed", (void *)it->data);
|
||||
evas_object_raise(it->base.view);
|
||||
evas_object_smart_callback_call((void *)obj, "changed", (void *)it->base.data);
|
||||
if (wd->delay) ecore_timer_del(wd->delay);
|
||||
wd->delay = ecore_timer_add(0.2, _delay_change, obj);
|
||||
}
|
||||
|
@ -646,7 +643,7 @@ elm_index_item_selected_get(const Evas_Object *obj, int level)
|
|||
Elm_Index_Item *it;
|
||||
if (!wd) return NULL;
|
||||
EINA_LIST_FOREACH(wd->items, l, it)
|
||||
if ((it->selected) && (it->level == level)) return it->data;
|
||||
if ((it->selected) && (it->level == level)) return it->base.data;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -813,8 +810,8 @@ elm_index_item_sorted_insert(Evas_Object *obj, const char *letter, const void *i
|
|||
else
|
||||
{
|
||||
Elm_Index_Item *p_it = eina_list_data_get(lnear);
|
||||
if (cmp_data_func(p_it->data, it->data) >= 0)
|
||||
p_it->data = it->data;
|
||||
if (cmp_data_func(p_it->base.data, it->base.data) >= 0)
|
||||
p_it->base.data = it->base.data;
|
||||
_item_free(it);
|
||||
}
|
||||
}
|
||||
|
@ -914,8 +911,7 @@ elm_index_item_go(Evas_Object *obj, int level __UNUSED__)
|
|||
EAPI void *
|
||||
elm_index_item_data_get(const Elm_Index_Item *it)
|
||||
{
|
||||
if (!it) return NULL;
|
||||
return (void *)it->data;
|
||||
return elm_widget_item_data_get(it);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -931,8 +927,21 @@ elm_index_item_data_get(const Elm_Index_Item *it)
|
|||
EAPI void
|
||||
elm_index_item_data_set(Elm_Index_Item *it, const void *data)
|
||||
{
|
||||
if (!it) return;
|
||||
it->data = data;
|
||||
elm_widget_item_data_set(it, data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the function called when a index item is freed.
|
||||
*
|
||||
* @param it The item to set the callback on
|
||||
* @param func The function called
|
||||
*
|
||||
* @ingroup Index
|
||||
*/
|
||||
EAPI void
|
||||
elm_index_item_del_cb_set(Elm_Index_Item *it, Evas_Smart_Cb func)
|
||||
{
|
||||
elm_widget_item_del_cb_set(it, func);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -27,13 +27,11 @@ struct _Widget_Data
|
|||
|
||||
struct _Elm_List_Item
|
||||
{
|
||||
Elm_Widget_Item base;
|
||||
Eina_List *node;
|
||||
Evas_Object *obj, *base;
|
||||
const char *label;
|
||||
Evas_Object *icon, *end;
|
||||
Evas_Smart_Cb func;
|
||||
Evas_Smart_Cb del_cb;
|
||||
const void *data;
|
||||
Ecore_Timer *long_timer;
|
||||
Eina_Bool deleted : 1;
|
||||
Eina_Bool even : 1;
|
||||
|
@ -72,41 +70,33 @@ static void _mouse_move(void *data, Evas *evas, Evas_Object *obj, void *event_in
|
|||
return __VA_ARGS__; \
|
||||
}
|
||||
|
||||
|
||||
|
||||
static inline void
|
||||
_elm_list_item_call_del_cb(Elm_List_Item *it)
|
||||
{
|
||||
if (it->del_cb) it->del_cb((void *)it->data, it->obj, it);
|
||||
}
|
||||
|
||||
static inline void
|
||||
_elm_list_item_free(Elm_List_Item *it)
|
||||
{
|
||||
evas_object_event_callback_del_full
|
||||
(it->base, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down, it);
|
||||
(it->base.view, EVAS_CALLBACK_MOUSE_DOWN, _mouse_down, it);
|
||||
evas_object_event_callback_del_full
|
||||
(it->base, EVAS_CALLBACK_MOUSE_UP, _mouse_up, it);
|
||||
(it->base.view, EVAS_CALLBACK_MOUSE_UP, _mouse_up, it);
|
||||
evas_object_event_callback_del_full
|
||||
(it->base, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move, it);
|
||||
(it->base.view, EVAS_CALLBACK_MOUSE_MOVE, _mouse_move, it);
|
||||
|
||||
if (it->icon)
|
||||
evas_object_event_callback_del_full
|
||||
(it->icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
|
||||
_changed_size_hints, it->obj);
|
||||
_changed_size_hints, it->base.widget);
|
||||
|
||||
if (it->end)
|
||||
evas_object_event_callback_del_full
|
||||
(it->end, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
|
||||
_changed_size_hints, it->obj);
|
||||
_changed_size_hints, it->base.widget);
|
||||
|
||||
eina_stringshare_del(it->label);
|
||||
|
||||
if (it->long_timer) ecore_timer_del(it->long_timer);
|
||||
if (it->icon) evas_object_del(it->icon);
|
||||
if (it->end) evas_object_del(it->end);
|
||||
if (it->base) evas_object_del(it->base);
|
||||
free(it);
|
||||
|
||||
elm_widget_item_del(it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -118,7 +108,7 @@ _elm_list_process_deletions(Widget_Data *wd)
|
|||
|
||||
EINA_LIST_FREE(wd->to_delete, it)
|
||||
{
|
||||
_elm_list_item_call_del_cb(it);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
|
||||
wd->items = eina_list_remove_list(wd->items, it->node);
|
||||
_elm_list_item_free(it);
|
||||
|
@ -174,7 +164,7 @@ _del_hook(Evas_Object *obj)
|
|||
fprintf(stderr, "ERROR: list deleted while walking.\n");
|
||||
|
||||
_elm_list_walk(wd);
|
||||
EINA_LIST_FOREACH(wd->items, n, it) _elm_list_item_call_del_cb(it);
|
||||
EINA_LIST_FOREACH(wd->items, n, it) elm_widget_item_pre_notify_del(it);
|
||||
_elm_list_unwalk(wd);
|
||||
if (wd->to_delete) fprintf(stderr, "ERROR: leaking nodes!\n");
|
||||
|
||||
|
@ -303,7 +293,7 @@ _sub_del(void *data __UNUSED__, Evas_Object *obj, void *event_info)
|
|||
static void
|
||||
_item_hilight(Elm_List_Item *it)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
const char *selectraise;
|
||||
|
||||
if (!wd) return;
|
||||
|
@ -311,10 +301,10 @@ _item_hilight(Elm_List_Item *it)
|
|||
if (it->hilighted) return;
|
||||
_elm_list_walk(wd);
|
||||
|
||||
edje_object_signal_emit(it->base, "elm,state,selected", "elm");
|
||||
selectraise = edje_object_data_get(it->base, "selectraise");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
||||
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
||||
if ((selectraise) && (!strcmp(selectraise, "on")))
|
||||
evas_object_raise(it->base);
|
||||
evas_object_raise(it->base.view);
|
||||
it->hilighted = EINA_TRUE;
|
||||
|
||||
_elm_list_unwalk(wd);
|
||||
|
@ -323,7 +313,7 @@ _item_hilight(Elm_List_Item *it)
|
|||
static void
|
||||
_item_select(Elm_List_Item *it)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
|
||||
if (!wd) return;
|
||||
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it);
|
||||
|
@ -337,8 +327,8 @@ _item_select(Elm_List_Item *it)
|
|||
call:
|
||||
_elm_list_walk(wd);
|
||||
|
||||
if (it->func) it->func((void *)it->data, it->obj, it);
|
||||
evas_object_smart_callback_call(it->obj, "selected", it);
|
||||
if (it->func) it->func((void *)it->base.data, it->base.widget, it);
|
||||
evas_object_smart_callback_call(it->base.widget, "selected", it);
|
||||
|
||||
_elm_list_unwalk(wd);
|
||||
}
|
||||
|
@ -346,7 +336,7 @@ _item_select(Elm_List_Item *it)
|
|||
static void
|
||||
_item_unselect(Elm_List_Item *it)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
const char *stacking, *selectraise;
|
||||
|
||||
if (!wd) return;
|
||||
|
@ -354,20 +344,20 @@ _item_unselect(Elm_List_Item *it)
|
|||
if (!it->hilighted) return;
|
||||
_elm_list_walk(wd);
|
||||
|
||||
edje_object_signal_emit(it->base, "elm,state,unselected", "elm");
|
||||
stacking = edje_object_data_get(it->base, "stacking");
|
||||
selectraise = edje_object_data_get(it->base, "selectraise");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,unselected", "elm");
|
||||
stacking = edje_object_data_get(it->base.view, "stacking");
|
||||
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
||||
if ((selectraise) && (!strcmp(selectraise, "on")))
|
||||
{
|
||||
if ((stacking) && (!strcmp(stacking, "below")))
|
||||
evas_object_lower(it->base);
|
||||
evas_object_lower(it->base.view);
|
||||
}
|
||||
it->hilighted = EINA_FALSE;
|
||||
if (it->selected)
|
||||
{
|
||||
it->selected = EINA_FALSE;
|
||||
wd->selected = eina_list_remove(wd->selected, it);
|
||||
evas_object_smart_callback_call(it->obj, "unselected", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "unselected", it);
|
||||
}
|
||||
|
||||
_elm_list_unwalk(wd);
|
||||
|
@ -377,7 +367,7 @@ static void
|
|||
_mouse_move(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
|
||||
{
|
||||
Elm_List_Item *it = data;
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
Evas_Event_Mouse_Move *ev = event_info;
|
||||
|
||||
if (!wd) return;
|
||||
|
@ -402,13 +392,13 @@ static Eina_Bool
|
|||
_long_press(void *data)
|
||||
{
|
||||
Elm_List_Item *it = data;
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
|
||||
if (!wd) return ECORE_CALLBACK_CANCEL;
|
||||
it->long_timer = NULL;
|
||||
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, 0);
|
||||
wd->longpressed = EINA_TRUE;
|
||||
evas_object_smart_callback_call(it->obj, "longpressed", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "longpressed", it);
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
|
||||
|
@ -416,7 +406,7 @@ static void
|
|||
_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
|
||||
{
|
||||
Elm_List_Item *it = data;
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
Evas_Event_Mouse_Down *ev = event_info;
|
||||
|
||||
if (!wd) return;
|
||||
|
@ -431,14 +421,14 @@ _mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void
|
|||
it->long_timer = ecore_timer_add(1.0, _long_press, it);
|
||||
/* Always call the callbacks last - the user may delete our context! */
|
||||
if (ev->flags & EVAS_BUTTON_DOUBLE_CLICK)
|
||||
evas_object_smart_callback_call(it->obj, "clicked", it);
|
||||
evas_object_smart_callback_call(it->base.widget, "clicked", it);
|
||||
}
|
||||
|
||||
static void
|
||||
_mouse_up(void *data, Evas *evas __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info)
|
||||
{
|
||||
Elm_List_Item *it = data;
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
Evas_Event_Mouse_Up *ev = event_info;
|
||||
|
||||
if (!wd) return;
|
||||
|
@ -506,22 +496,21 @@ _item_new(Evas_Object *obj, const char *label, Evas_Object *icon, Evas_Object *e
|
|||
Elm_List_Item *it;
|
||||
|
||||
if (!wd) return NULL;
|
||||
it = calloc(1, sizeof(Elm_List_Item));
|
||||
it->obj = obj;
|
||||
it = elm_widget_item_new(obj, Elm_List_Item);
|
||||
it->label = eina_stringshare_add(label);
|
||||
it->icon = icon;
|
||||
it->end = end;
|
||||
it->func = func;
|
||||
it->data = data;
|
||||
it->base = edje_object_add(evas_object_evas_get(obj));
|
||||
evas_object_event_callback_add(it->base, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
it->base.data = data;
|
||||
it->base.view = edje_object_add(evas_object_evas_get(obj));
|
||||
evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOUSE_DOWN,
|
||||
_mouse_down, it);
|
||||
evas_object_event_callback_add(it->base, EVAS_CALLBACK_MOUSE_UP,
|
||||
evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOUSE_UP,
|
||||
_mouse_up, it);
|
||||
evas_object_event_callback_add(it->base, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOUSE_MOVE,
|
||||
_mouse_move, it);
|
||||
evas_object_size_hint_weight_set(it->base, 1.0, 1.0);
|
||||
evas_object_size_hint_align_set(it->base, -1.0, -1.0);
|
||||
evas_object_size_hint_weight_set(it->base.view, 1.0, 1.0);
|
||||
evas_object_size_hint_align_set(it->base.view, -1.0, -1.0);
|
||||
if (it->icon)
|
||||
{
|
||||
elm_widget_sub_object_add(obj, it->icon);
|
||||
|
@ -592,39 +581,39 @@ _fix_items(Evas_Object *obj)
|
|||
const char *stacking;
|
||||
|
||||
if (it->is_separator)
|
||||
_elm_theme_object_set(obj, it->base, "list", "separator", style);
|
||||
_elm_theme_object_set(obj, it->base.view, "list", "separator", style);
|
||||
else if (wd->mode == ELM_LIST_COMPRESS)
|
||||
{
|
||||
if (it->even)
|
||||
_elm_theme_object_set(obj, it->base, "list", "item_compress", style);
|
||||
_elm_theme_object_set(obj, it->base.view, "list", "item_compress", style);
|
||||
else
|
||||
_elm_theme_object_set(obj, it->base, "list", "item_compress_odd", style);
|
||||
_elm_theme_object_set(obj, it->base.view, "list", "item_compress_odd", style);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (it->even)
|
||||
_elm_theme_object_set(obj, it->base, "list", "item", style);
|
||||
_elm_theme_object_set(obj, it->base.view, "list", "item", style);
|
||||
else
|
||||
_elm_theme_object_set(obj, it->base, "list", "item_odd", style);
|
||||
_elm_theme_object_set(obj, it->base.view, "list", "item_odd", style);
|
||||
}
|
||||
stacking = edje_object_data_get(it->base, "stacking");
|
||||
stacking = edje_object_data_get(it->base.view, "stacking");
|
||||
if (stacking)
|
||||
{
|
||||
if (!strcmp(stacking, "below"))
|
||||
evas_object_lower(it->base);
|
||||
evas_object_lower(it->base.view);
|
||||
else if (!strcmp(stacking, "above"))
|
||||
evas_object_raise(it->base);
|
||||
evas_object_raise(it->base.view);
|
||||
}
|
||||
edje_object_part_text_set(it->base, "elm.text", it->label);
|
||||
edje_object_part_text_set(it->base.view, "elm.text", it->label);
|
||||
if ((!it->icon) && (minh[0] > 0))
|
||||
{
|
||||
it->icon = evas_object_rectangle_add(evas_object_evas_get(it->base));
|
||||
it->icon = evas_object_rectangle_add(evas_object_evas_get(it->base.view));
|
||||
evas_object_color_set(it->icon, 0, 0, 0, 0);
|
||||
it->dummy_icon = EINA_TRUE;
|
||||
}
|
||||
if ((!it->end) && (minh[1] > 0))
|
||||
{
|
||||
it->end = evas_object_rectangle_add(evas_object_evas_get(it->base));
|
||||
it->end = evas_object_rectangle_add(evas_object_evas_get(it->base.view));
|
||||
evas_object_color_set(it->end, 0, 0, 0, 0);
|
||||
it->dummy_end = EINA_TRUE;
|
||||
}
|
||||
|
@ -632,28 +621,28 @@ _fix_items(Evas_Object *obj)
|
|||
{
|
||||
evas_object_size_hint_min_set(it->icon, minw[0], minh[0]);
|
||||
evas_object_size_hint_max_set(it->icon, 99999, 99999);
|
||||
edje_object_part_swallow(it->base, "elm.swallow.icon", it->icon);
|
||||
edje_object_part_swallow(it->base.view, "elm.swallow.icon", it->icon);
|
||||
}
|
||||
if (it->end)
|
||||
{
|
||||
evas_object_size_hint_min_set(it->end, minw[1], minh[1]);
|
||||
evas_object_size_hint_max_set(it->end, 99999, 99999);
|
||||
edje_object_part_swallow(it->base, "elm.swallow.end", it->end);
|
||||
edje_object_part_swallow(it->base.view, "elm.swallow.end", it->end);
|
||||
}
|
||||
if (!it->fixed)
|
||||
{
|
||||
// this may call up user and it may modify the list item
|
||||
// but we're safe as we're flagged as walking.
|
||||
// just don't process further
|
||||
edje_object_message_signal_process(it->base);
|
||||
edje_object_message_signal_process(it->base.view);
|
||||
if (it->deleted)
|
||||
continue;
|
||||
mw = mh = -1;
|
||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||
edje_object_size_min_restricted_calc(it->base, &mw, &mh, mw, mh);
|
||||
edje_object_size_min_restricted_calc(it->base.view, &mw, &mh, mw, mh);
|
||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||
evas_object_size_hint_min_set(it->base, mw, mh);
|
||||
evas_object_show(it->base);
|
||||
evas_object_size_hint_min_set(it->base.view, mw, mh);
|
||||
evas_object_show(it->base.view);
|
||||
}
|
||||
if ((it->selected) || (it->hilighted))
|
||||
{
|
||||
|
@ -662,14 +651,14 @@ _fix_items(Evas_Object *obj)
|
|||
// this may call up user and it may modify the list item
|
||||
// but we're safe as we're flagged as walking.
|
||||
// just don't process further
|
||||
edje_object_signal_emit(it->base, "elm,state,selected", "elm");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
||||
if (it->deleted)
|
||||
continue;
|
||||
|
||||
selectraise = edje_object_data_get(it->base, "selectraise");
|
||||
selectraise = edje_object_data_get(it->base.view, "selectraise");
|
||||
if ((selectraise) && (!strcmp(selectraise, "on")))
|
||||
evas_object_raise(it->base);
|
||||
stacking = edje_object_data_get(it->base, "stacking");
|
||||
evas_object_raise(it->base.view);
|
||||
stacking = edje_object_data_get(it->base.view, "stacking");
|
||||
}
|
||||
it->fixed = EINA_TRUE;
|
||||
it->is_even = it->even;
|
||||
|
@ -805,7 +794,7 @@ elm_list_item_append(Evas_Object *obj, const char *label, Evas_Object *icon, Eva
|
|||
|
||||
wd->items = eina_list_append(wd->items, it);
|
||||
it->node = eina_list_last(wd->items);
|
||||
elm_box_pack_end(wd->box, it->base);
|
||||
elm_box_pack_end(wd->box, it->base.view);
|
||||
return it;
|
||||
}
|
||||
|
||||
|
@ -832,7 +821,7 @@ elm_list_item_prepend(Evas_Object *obj, const char *label, Evas_Object *icon, Ev
|
|||
|
||||
wd->items = eina_list_prepend(wd->items, it);
|
||||
it->node = wd->items;
|
||||
elm_box_pack_start(wd->box, it->base);
|
||||
elm_box_pack_start(wd->box, it->base.view);
|
||||
return it;
|
||||
}
|
||||
|
||||
|
@ -866,7 +855,7 @@ elm_list_item_insert_before(Evas_Object *obj, Elm_List_Item *before, const char
|
|||
it = _item_new(obj, label, icon, end, func, data);
|
||||
wd->items = eina_list_prepend_relative_list(wd->items, it, before->node);
|
||||
it->node = before->node->prev;
|
||||
elm_box_pack_before(wd->box, it->base, before->base);
|
||||
elm_box_pack_before(wd->box, it->base.view, before->base.view);
|
||||
return it;
|
||||
}
|
||||
|
||||
|
@ -900,7 +889,7 @@ elm_list_item_insert_after(Evas_Object *obj, Elm_List_Item *after, const char *l
|
|||
it = _item_new(obj, label, icon, end, func, data);
|
||||
wd->items = eina_list_append_relative_list(wd->items, it, after->node);
|
||||
it->node = after->node->next;
|
||||
elm_box_pack_after(wd->box, it->base, after->base);
|
||||
elm_box_pack_after(wd->box, it->base.view, after->base.view);
|
||||
return it;
|
||||
}
|
||||
|
||||
|
@ -933,13 +922,13 @@ elm_list_item_sorted_insert(Evas_Object *obj, const char *label, Evas_Object *ic
|
|||
if (!l)
|
||||
{
|
||||
it->node = eina_list_last(wd->items);
|
||||
elm_box_pack_end(wd->box, it->base);
|
||||
elm_box_pack_end(wd->box, it->base.view);
|
||||
}
|
||||
else
|
||||
{
|
||||
Elm_List_Item *before = eina_list_data_get(l);
|
||||
it->node = before->node->prev;
|
||||
elm_box_pack_before(wd->box, it->base, before->base);
|
||||
elm_box_pack_before(wd->box, it->base.view, before->base.view);
|
||||
}
|
||||
return it;
|
||||
}
|
||||
|
@ -981,7 +970,7 @@ elm_list_clear(Evas_Object *obj)
|
|||
|
||||
EINA_LIST_FREE(wd->items, it)
|
||||
{
|
||||
_elm_list_item_call_del_cb(it);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
_elm_list_item_free(it);
|
||||
}
|
||||
|
||||
|
@ -1208,7 +1197,7 @@ elm_list_item_separator_get(const Elm_List_Item *it)
|
|||
EAPI void
|
||||
elm_list_item_selected_set(Elm_List_Item *it, Eina_Bool selected)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
if (!wd) return;
|
||||
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it);
|
||||
selected = !!selected;
|
||||
|
@ -1257,13 +1246,13 @@ elm_list_item_selected_get(Elm_List_Item *it)
|
|||
EAPI void
|
||||
elm_list_item_show(Elm_List_Item *it)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
Evas_Coord bx, by, bw, bh;
|
||||
Evas_Coord x, y, w, h;
|
||||
|
||||
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it);
|
||||
evas_object_geometry_get(wd->box, &bx, &by, &bw, &bh);
|
||||
evas_object_geometry_get(it->base, &x, &y, &w, &h);
|
||||
evas_object_geometry_get(it->base.view, &x, &y, &w, &h);
|
||||
x -= bx;
|
||||
y -= by;
|
||||
if (wd->scr)
|
||||
|
@ -1280,7 +1269,7 @@ elm_list_item_show(Elm_List_Item *it)
|
|||
EAPI void
|
||||
elm_list_item_del(Elm_List_Item *it)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
if (!wd) return;
|
||||
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it);
|
||||
|
||||
|
@ -1298,7 +1287,7 @@ elm_list_item_del(Elm_List_Item *it)
|
|||
|
||||
_elm_list_walk(wd);
|
||||
|
||||
_elm_list_item_call_del_cb(it);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
_elm_list_item_free(it);
|
||||
|
||||
_elm_list_unwalk(wd);
|
||||
|
@ -1316,7 +1305,7 @@ EAPI void
|
|||
elm_list_item_del_cb_set(Elm_List_Item *it, Evas_Smart_Cb func)
|
||||
{
|
||||
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it);
|
||||
it->del_cb = func;
|
||||
elm_widget_item_del_cb_set(it, func);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1331,7 +1320,7 @@ EAPI void *
|
|||
elm_list_item_data_get(const Elm_List_Item *it)
|
||||
{
|
||||
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, NULL);
|
||||
return (void *)it->data;
|
||||
return elm_widget_item_data_get(it);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1375,7 +1364,7 @@ elm_list_item_icon_set(Elm_List_Item *it, Evas_Object *icon)
|
|||
}
|
||||
if (!icon)
|
||||
{
|
||||
icon = evas_object_rectangle_add(evas_object_evas_get(it->obj));
|
||||
icon = evas_object_rectangle_add(evas_object_evas_get(it->base.widget));
|
||||
evas_object_color_set(icon, 0, 0, 0, 0);
|
||||
it->dummy_icon = EINA_TRUE;
|
||||
}
|
||||
|
@ -1385,8 +1374,8 @@ elm_list_item_icon_set(Elm_List_Item *it, Evas_Object *icon)
|
|||
it->icon = NULL;
|
||||
}
|
||||
it->icon = icon;
|
||||
if (it->base)
|
||||
edje_object_part_swallow(it->base, "elm.swallow.icon", icon);
|
||||
if (it->base.view)
|
||||
edje_object_part_swallow(it->base.view, "elm.swallow.icon", icon);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1430,7 +1419,7 @@ elm_list_item_end_set(Elm_List_Item *it, Evas_Object *end)
|
|||
}
|
||||
if (!end)
|
||||
{
|
||||
end = evas_object_rectangle_add(evas_object_evas_get(it->obj));
|
||||
end = evas_object_rectangle_add(evas_object_evas_get(it->base.widget));
|
||||
evas_object_color_set(end, 0, 0, 0, 0);
|
||||
it->dummy_end = EINA_TRUE;
|
||||
}
|
||||
|
@ -1440,8 +1429,8 @@ elm_list_item_end_set(Elm_List_Item *it, Evas_Object *end)
|
|||
it->end = NULL;
|
||||
}
|
||||
it->end = end;
|
||||
if (it->base)
|
||||
edje_object_part_swallow(it->base, "elm.swallow.end", end);
|
||||
if (it->base.view)
|
||||
edje_object_part_swallow(it->base.view, "elm.swallow.end", end);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1456,7 +1445,7 @@ EAPI Evas_Object *
|
|||
elm_list_item_base_get(const Elm_List_Item *it)
|
||||
{
|
||||
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it, NULL);
|
||||
return it->base;
|
||||
return it->base.view;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1487,8 +1476,8 @@ elm_list_item_label_set(Elm_List_Item *it, const char *text)
|
|||
{
|
||||
ELM_LIST_ITEM_CHECK_DELETED_RETURN(it);
|
||||
if (!eina_stringshare_replace(&it->label, text)) return;
|
||||
if (it->base)
|
||||
edje_object_part_text_set(it->base, "elm.text", it->label);
|
||||
if (it->base.view)
|
||||
edje_object_part_text_set(it->base.view, "elm.text", it->label);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -14,8 +14,7 @@ typedef struct _Widget_Data Widget_Data;
|
|||
|
||||
struct _Elm_Menu_Item
|
||||
{
|
||||
Evas_Object *menu;
|
||||
Evas_Object *o;
|
||||
Elm_Widget_Item base;
|
||||
Elm_Menu_Item *parent;
|
||||
|
||||
Eina_Bool separator;
|
||||
|
@ -26,8 +25,6 @@ struct _Elm_Menu_Item
|
|||
const char *label;
|
||||
|
||||
Evas_Smart_Cb func;
|
||||
Evas_Smart_Cb del_cb;
|
||||
const void *data;
|
||||
|
||||
//if submenu
|
||||
Eina_Bool open;
|
||||
|
@ -59,7 +56,7 @@ _del_item(Elm_Menu_Item *item)
|
|||
{
|
||||
Elm_Menu_Item *child;
|
||||
|
||||
if (item->del_cb) item->del_cb((void*)item->data, item->o, item);
|
||||
elm_widget_item_pre_notify_del(item);
|
||||
|
||||
EINA_LIST_FREE(item->items, child)
|
||||
_del_item(child);
|
||||
|
@ -67,8 +64,7 @@ _del_item(Elm_Menu_Item *item)
|
|||
if (item->label) eina_stringshare_del(item->label);
|
||||
if (item->hv) evas_object_del(item->hv);
|
||||
if (item->location) evas_object_del(item->location);
|
||||
if (item->o) evas_object_del(item->o);
|
||||
free(item);
|
||||
elm_widget_item_del(item);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -108,28 +104,31 @@ _theme_hook(Evas_Object *obj)
|
|||
{
|
||||
ll = eina_list_append(ll, item->items);
|
||||
if (item->separator)
|
||||
_elm_theme_object_set(obj, item->o, "menu", "separator",
|
||||
_elm_theme_object_set(obj, item->base.view, "menu", "separator",
|
||||
elm_widget_style_get(obj));
|
||||
else if (item->bx)
|
||||
{
|
||||
_elm_theme_object_set(obj, item->o, "menu", "item_with_submenu",
|
||||
elm_widget_style_get(obj));
|
||||
_elm_theme_object_set
|
||||
(obj, item->base.view, "menu", "item_with_submenu",
|
||||
elm_widget_style_get(obj));
|
||||
elm_menu_item_label_set(item, item->label);
|
||||
elm_menu_item_icon_set(item, item->icon);
|
||||
}
|
||||
else
|
||||
{
|
||||
_elm_theme_object_set(obj, item->o, "menu", "item",
|
||||
_elm_theme_object_set(obj, item->base.view, "menu", "item",
|
||||
elm_widget_style_get(obj));
|
||||
elm_menu_item_label_set(item, item->label);
|
||||
elm_menu_item_icon_set(item, item->icon);
|
||||
}
|
||||
if (item->disabled)
|
||||
edje_object_signal_emit(item->o, "elm,state,disabled", "elm");
|
||||
edje_object_signal_emit
|
||||
(item->base.view, "elm,state,disabled", "elm");
|
||||
else
|
||||
edje_object_signal_emit(item->o, "elm,state,enabled", "elm");
|
||||
edje_object_message_signal_process(item->o);
|
||||
edje_object_scale_set(item->o, elm_widget_scale_get(obj) *
|
||||
edje_object_signal_emit
|
||||
(item->base.view, "elm,state,enabled", "elm");
|
||||
edje_object_message_signal_process(item->base.view);
|
||||
edje_object_scale_set(item->base.view, elm_widget_scale_get(obj) *
|
||||
_elm_config->scale);
|
||||
}
|
||||
}
|
||||
|
@ -176,11 +175,11 @@ _submenu_sizing_eval(Elm_Menu_Item *parent)
|
|||
Eina_List *l;
|
||||
Elm_Menu_Item *item;
|
||||
Evas_Coord x_p, y_p, w_p, h_p, x2, y2, w2, h2, bx, by, bw, bh, px, py, pw, ph;
|
||||
Widget_Data *wd = elm_widget_data_get(parent->menu);
|
||||
Widget_Data *wd = elm_widget_data_get(parent->base.widget);
|
||||
if (!wd) return;
|
||||
EINA_LIST_FOREACH(parent->items,l,item) _item_sizing_eval(item);
|
||||
evas_object_geometry_get(parent->location, &x_p, &y_p, &w_p, &h_p);
|
||||
evas_object_geometry_get(parent->o, &x2, &y2, &w2, &h2);
|
||||
evas_object_geometry_get(parent->base.view, &x2, &y2, &w2, &h2);
|
||||
evas_object_geometry_get(parent->bx, &bx, &by, &bw, &bh);
|
||||
evas_object_geometry_get(wd->parent, &px, &py, &pw, &ph);
|
||||
|
||||
|
@ -214,11 +213,11 @@ _item_sizing_eval(Elm_Menu_Item *item)
|
|||
Evas_Coord minw = -1, minh = -1, maxw = -1, maxh = -1;
|
||||
if (!item->separator)
|
||||
elm_coords_finger_size_adjust(1, &minw, 1, &minh);
|
||||
edje_object_size_min_restricted_calc(item->o, &minw, &minh, minw, minh);
|
||||
edje_object_size_min_restricted_calc(item->base.view, &minw, &minh, minw, minh);
|
||||
if (!item->separator)
|
||||
elm_coords_finger_size_adjust(1, &minw, 1, &minh);
|
||||
evas_object_size_hint_min_set(item->o, minw, minh);
|
||||
evas_object_size_hint_max_set(item->o, maxw, maxh);
|
||||
evas_object_size_hint_min_set(item->base.view, minw, minh);
|
||||
evas_object_size_hint_max_set(item->base.view, maxw, maxh);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -292,9 +291,9 @@ _menu_item_select(void *data, Evas_Object *obj __UNUSED__, const char *emission
|
|||
else _submenu_hide(it);
|
||||
}
|
||||
else
|
||||
_menu_hide(it->menu, NULL, NULL);
|
||||
_menu_hide(it->base.widget, NULL, NULL);
|
||||
|
||||
if (it->func) it->func((void *)(it->data), it->menu, it);
|
||||
if (it->func) it->func((void *)(it->base.data), it->base.widget, it);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -312,7 +311,7 @@ _menu_item_activate(void *data, Evas_Object *obj __UNUSED__, const char *emissio
|
|||
}
|
||||
else
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(item->menu);
|
||||
Widget_Data *wd = elm_widget_data_get(item->base.widget);
|
||||
EINA_LIST_FOREACH(wd->items, l, item2)
|
||||
{
|
||||
if ((item2->open) && (item2 != item)) _submenu_hide(item2);
|
||||
|
@ -326,7 +325,7 @@ _submenu_open(void *data, Evas_Object *obj __UNUSED__, const char *emission __UN
|
|||
Elm_Menu_Item *it = data;
|
||||
it->open = EINA_TRUE;
|
||||
evas_object_show(it->hv);
|
||||
_sizing_eval(it->menu);
|
||||
_sizing_eval(it->base.widget);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -340,37 +339,37 @@ _show(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
|
|||
static void
|
||||
_item_obj_create(Elm_Menu_Item *item)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(item->menu);
|
||||
Widget_Data *wd = elm_widget_data_get(item->base.widget);
|
||||
if (!wd) return;
|
||||
item->o = edje_object_add(evas_object_evas_get(wd->bx));
|
||||
evas_object_size_hint_weight_set(item->o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_fill_set(item->o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
_elm_theme_object_set(item->menu, item->o, "menu", "item", elm_widget_style_get(item->menu));
|
||||
edje_object_signal_callback_add(item->o, "elm,action,click", "",
|
||||
item->base.view = edje_object_add(evas_object_evas_get(wd->bx));
|
||||
evas_object_size_hint_weight_set(item->base.view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_fill_set(item->base.view, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
_elm_theme_object_set(item->base.widget, item->base.view, "menu", "item", elm_widget_style_get(item->base.widget));
|
||||
edje_object_signal_callback_add(item->base.view, "elm,action,click", "",
|
||||
_menu_item_select, item);
|
||||
edje_object_signal_callback_add(item->o, "elm,action,activate", "",
|
||||
edje_object_signal_callback_add(item->base.view, "elm,action,activate", "",
|
||||
_menu_item_activate, item);
|
||||
evas_object_show(item->o);
|
||||
evas_object_show(item->base.view);
|
||||
}
|
||||
|
||||
static void
|
||||
_item_separator_obj_create(Elm_Menu_Item *item)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(item->menu);
|
||||
Widget_Data *wd = elm_widget_data_get(item->base.widget);
|
||||
if (!wd) return;
|
||||
item->o = edje_object_add(evas_object_evas_get(wd->bx));
|
||||
evas_object_size_hint_weight_set(item->o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_fill_set(item->o, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
_elm_theme_object_set(item->menu, item->o, "menu", "separator", elm_widget_style_get(item->menu));
|
||||
edje_object_signal_callback_add(item->o, "elm,action,activate", "",
|
||||
item->base.view = edje_object_add(evas_object_evas_get(wd->bx));
|
||||
evas_object_size_hint_weight_set(item->base.view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_fill_set(item->base.view, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
_elm_theme_object_set(item->base.widget, item->base.view, "menu", "separator", elm_widget_style_get(item->base.widget));
|
||||
edje_object_signal_callback_add(item->base.view, "elm,action,activate", "",
|
||||
_menu_item_activate, item);
|
||||
evas_object_show(item->o);
|
||||
evas_object_show(item->base.view);
|
||||
}
|
||||
|
||||
static void
|
||||
_item_submenu_obj_create(Elm_Menu_Item *item)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(item->menu);
|
||||
Widget_Data *wd = elm_widget_data_get(item->base.widget);
|
||||
if (!wd) return;
|
||||
item->location = elm_icon_add(wd->bx);
|
||||
item->hv = elm_hover_add(wd->bx);
|
||||
|
@ -383,16 +382,16 @@ _item_submenu_obj_create(Elm_Menu_Item *item)
|
|||
evas_object_show(item->bx);
|
||||
elm_hover_content_set(item->hv, elm_hover_best_content_location_get(item->hv, ELM_HOVER_AXIS_VERTICAL), item->bx);
|
||||
|
||||
_elm_theme_object_set(item->menu, item->o, "menu", "item_with_submenu", elm_widget_style_get(item->menu));
|
||||
_elm_theme_object_set(item->base.widget, item->base.view, "menu", "item_with_submenu", elm_widget_style_get(item->base.widget));
|
||||
elm_menu_item_label_set(item, item->label);
|
||||
elm_menu_item_icon_set(item, item->icon);
|
||||
|
||||
edje_object_signal_callback_add(item->o, "elm,action,open", "",
|
||||
edje_object_signal_callback_add(item->base.view, "elm,action,open", "",
|
||||
_submenu_open, item);
|
||||
evas_object_event_callback_add(item->o, EVAS_CALLBACK_MOVE, _item_move_resize, item);
|
||||
evas_object_event_callback_add(item->o, EVAS_CALLBACK_RESIZE, _item_move_resize, item);
|
||||
evas_object_event_callback_add(item->base.view, EVAS_CALLBACK_MOVE, _item_move_resize, item);
|
||||
evas_object_event_callback_add(item->base.view, EVAS_CALLBACK_RESIZE, _item_move_resize, item);
|
||||
|
||||
evas_object_event_callback_add(item->bx, EVAS_CALLBACK_RESIZE, _menu_resize, item->menu);
|
||||
evas_object_event_callback_add(item->bx, EVAS_CALLBACK_RESIZE, _menu_resize, item->base.widget);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -509,7 +508,7 @@ elm_menu_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
|||
EAPI Evas_Object *
|
||||
elm_menu_object_get(const Elm_Menu_Item *it)
|
||||
{
|
||||
return it->o;
|
||||
return it->base.view;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -532,11 +531,10 @@ elm_menu_item_add(Evas_Object *obj, Elm_Menu_Item *parent, Evas_Object *icon, co
|
|||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
|
||||
if (!wd) return NULL;
|
||||
subitem = ELM_NEW(Elm_Menu_Item);
|
||||
subitem = elm_widget_item_new(obj, Elm_Menu_Item);
|
||||
if (!subitem) return NULL;
|
||||
subitem->base.data = data;
|
||||
subitem->func = func;
|
||||
subitem->data = data;
|
||||
subitem->menu = obj;
|
||||
subitem->parent = parent;
|
||||
|
||||
_item_obj_create(subitem);
|
||||
|
@ -546,12 +544,12 @@ elm_menu_item_add(Evas_Object *obj, Elm_Menu_Item *parent, Evas_Object *icon, co
|
|||
if (parent)
|
||||
{
|
||||
if (!parent->bx) _item_submenu_obj_create(parent);
|
||||
elm_box_pack_end(parent->bx, subitem->o);
|
||||
elm_box_pack_end(parent->bx, subitem->base.view);
|
||||
parent->items = eina_list_append(parent->items, subitem);
|
||||
}
|
||||
else
|
||||
{
|
||||
elm_box_pack_end(wd->bx, subitem->o);
|
||||
elm_box_pack_end(wd->bx, subitem->base.view);
|
||||
wd->items = eina_list_append(wd->items, subitem);
|
||||
}
|
||||
|
||||
|
@ -573,13 +571,13 @@ elm_menu_item_label_set(Elm_Menu_Item *item, const char *label)
|
|||
eina_stringshare_replace(&item->label, label);
|
||||
|
||||
if (label)
|
||||
edje_object_signal_emit(item->o, "elm,state,text,visible", "elm");
|
||||
edje_object_signal_emit(item->base.view, "elm,state,text,visible", "elm");
|
||||
else
|
||||
edje_object_signal_emit(item->o, "elm,state,text,hidden", "elm");
|
||||
edje_object_signal_emit(item->base.view, "elm,state,text,hidden", "elm");
|
||||
|
||||
edje_object_message_signal_process(item->o);
|
||||
edje_object_part_text_set(item->o, "elm.text", label);
|
||||
_sizing_eval(item->menu);
|
||||
edje_object_message_signal_process(item->base.view);
|
||||
edje_object_part_text_set(item->base.view, "elm.text", label);
|
||||
_sizing_eval(item->base.widget);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -615,14 +613,14 @@ elm_menu_item_icon_set(Elm_Menu_Item *item, Evas_Object *icon)
|
|||
item->icon = icon;
|
||||
if (icon)
|
||||
{
|
||||
elm_widget_sub_object_add(item->menu, icon);
|
||||
elm_widget_sub_object_add(item->base.widget, icon);
|
||||
evas_object_event_callback_add(icon, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
|
||||
_changed_size_hints, item->menu);
|
||||
edje_object_part_swallow(item->o, "elm.swallow.content", icon);
|
||||
edje_object_signal_emit(item->o, "elm,state,icon,visible", "elm");
|
||||
edje_object_message_signal_process(item->o);
|
||||
_changed_size_hints, item->base.widget);
|
||||
edje_object_part_swallow(item->base.view, "elm.swallow.content", icon);
|
||||
edje_object_signal_emit(item->base.view, "elm,state,icon,visible", "elm");
|
||||
edje_object_message_signal_process(item->base.view);
|
||||
}
|
||||
_sizing_eval(item->menu);
|
||||
_sizing_eval(item->base.widget);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -640,12 +638,12 @@ elm_menu_item_disabled_set(Elm_Menu_Item *item, Eina_Bool disabled)
|
|||
item->disabled = disabled;
|
||||
if (disabled)
|
||||
{
|
||||
edje_object_signal_emit(item->o, "elm,state,disabled", "elm");
|
||||
edje_object_signal_emit(item->base.view, "elm,state,disabled", "elm");
|
||||
if (item->open) _submenu_hide(item);
|
||||
}
|
||||
else
|
||||
edje_object_signal_emit(item->o, "elm,state,enabled", "elm");
|
||||
edje_object_message_signal_process(item->o);
|
||||
edje_object_signal_emit(item->base.view, "elm,state,enabled", "elm");
|
||||
edje_object_message_signal_process(item->base.view);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -680,20 +678,20 @@ elm_menu_item_separator_add(Evas_Object *obj, Elm_Menu_Item *parent)
|
|||
ELM_CHECK_WIDTYPE(obj, widtype) NULL;
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
if (!wd) return NULL;
|
||||
subitem = ELM_NEW(Elm_Menu_Item);
|
||||
subitem = elm_widget_item_new(obj, Elm_Menu_Item);
|
||||
if (!subitem) return NULL;
|
||||
subitem->menu = obj;
|
||||
subitem->base.widget = obj;
|
||||
subitem->separator = 1;
|
||||
_item_separator_obj_create(subitem);
|
||||
if (!parent)
|
||||
{
|
||||
elm_box_pack_end(wd->bx, subitem->o);
|
||||
elm_box_pack_end(wd->bx, subitem->base.view);
|
||||
wd->items = eina_list_append(wd->items, subitem);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!parent->bx) _item_submenu_obj_create(parent);
|
||||
elm_box_pack_end(parent->bx, subitem->o);
|
||||
elm_box_pack_end(parent->bx, subitem->base.view);
|
||||
parent->items = eina_list_append(parent->items, subitem);
|
||||
}
|
||||
_sizing_eval(obj);
|
||||
|
@ -745,24 +743,23 @@ elm_menu_item_del(Elm_Menu_Item *item)
|
|||
Elm_Menu_Item *_item;
|
||||
|
||||
if (!item) return;
|
||||
if (item->del_cb) item->del_cb((void*)item->data, item->o, item);
|
||||
elm_widget_item_pre_notify_del(item);
|
||||
|
||||
EINA_LIST_FREE(item->items, _item) elm_menu_item_del(_item);
|
||||
if (item->label) eina_stringshare_del(item->label);
|
||||
if (item->icon) evas_object_del(item->icon);
|
||||
if (item->hv) evas_object_del(item->hv);
|
||||
if (item->location) evas_object_del(item->location);
|
||||
if (item->o) evas_object_del(item->o);
|
||||
|
||||
if (item->parent)
|
||||
item->parent->items = eina_list_remove(item->parent->items, item);
|
||||
else
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(item->menu);
|
||||
Widget_Data *wd = elm_widget_data_get(item->base.widget);
|
||||
wd->items = eina_list_remove(wd->items, item);
|
||||
}
|
||||
|
||||
free(item);
|
||||
elm_widget_item_del(item);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -776,8 +773,7 @@ elm_menu_item_del(Elm_Menu_Item *item)
|
|||
EAPI void
|
||||
elm_menu_item_del_cb_set(Elm_Menu_Item *it, Evas_Smart_Cb func)
|
||||
{
|
||||
if (!it) return;
|
||||
it->del_cb = func;
|
||||
elm_widget_item_del_cb_set(it, func);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -791,8 +787,7 @@ elm_menu_item_del_cb_set(Elm_Menu_Item *it, Evas_Smart_Cb func)
|
|||
EAPI void *
|
||||
elm_menu_item_data_get(const Elm_Menu_Item *it)
|
||||
{
|
||||
if (!it) return NULL;
|
||||
return (void *)it->data;
|
||||
return elm_widget_item_data_get(it);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -806,8 +801,7 @@ elm_menu_item_data_get(const Elm_Menu_Item *it)
|
|||
EAPI void
|
||||
elm_menu_item_data_set(Elm_Menu_Item *item, const void *data)
|
||||
{
|
||||
if (!item) return;
|
||||
item->data = data;
|
||||
elm_widget_item_data_set(item, data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -19,14 +19,11 @@ typedef struct _Widget_Data Widget_Data;
|
|||
|
||||
struct _Elm_Slideshow_Item
|
||||
{
|
||||
Evas_Object *obj;
|
||||
Elm_Widget_Item base;
|
||||
|
||||
Eina_List *l, *l_built;
|
||||
|
||||
const void *data;
|
||||
const Elm_Slideshow_Item_Class *itc;
|
||||
|
||||
Evas_Object *o;
|
||||
};
|
||||
|
||||
struct _Widget_Data
|
||||
|
@ -99,7 +96,7 @@ _sizing_eval(Evas_Object *obj)
|
|||
|
||||
static Elm_Slideshow_Item* _item_prev_get(Elm_Slideshow_Item* item)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(item->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(item->base.widget);
|
||||
Elm_Slideshow_Item* prev = eina_list_data_get(eina_list_prev(item->l));
|
||||
if(!prev && wd->loop)
|
||||
prev = eina_list_data_get(eina_list_last(item->l));
|
||||
|
@ -107,7 +104,7 @@ static Elm_Slideshow_Item* _item_prev_get(Elm_Slideshow_Item* item)
|
|||
}
|
||||
static Elm_Slideshow_Item* _item_next_get(Elm_Slideshow_Item* item)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(item->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(item->base.widget);
|
||||
Elm_Slideshow_Item* next = eina_list_data_get(eina_list_next(item->l));
|
||||
if(!next && wd->loop)
|
||||
next = eina_list_data_get(wd->items);
|
||||
|
@ -131,42 +128,42 @@ static void
|
|||
_item_realize(Elm_Slideshow_Item *item)
|
||||
{
|
||||
Elm_Slideshow_Item *_item;
|
||||
Evas_Object *obj = item->obj;
|
||||
Evas_Object *obj = item->base.widget;
|
||||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
|
||||
if (!wd) return;
|
||||
if ((!item->o) && (item->itc->func.get))
|
||||
if ((!item->base.view) && (item->itc->func.get))
|
||||
{
|
||||
item->o = item->itc->func.get((void*)item->data, obj);
|
||||
evas_object_smart_member_add(item->o, obj);
|
||||
item->base.view = item->itc->func.get((void*)item->base.data, obj);
|
||||
evas_object_smart_member_add(item->base.view, obj);
|
||||
item->l_built = eina_list_append(NULL, item);
|
||||
wd->items_built = eina_list_merge(wd->items_built, item->l_built);
|
||||
evas_object_hide(item->o);
|
||||
evas_object_hide(item->base.view);
|
||||
}
|
||||
else if (item->l_built)
|
||||
wd->items_built = eina_list_demote_list(wd->items_built, item->l_built);
|
||||
|
||||
//pre-create previous and next item
|
||||
_item = _item_next_get(item);
|
||||
if ((_item) && (!_item->o) && (_item->itc->func.get))
|
||||
if ((_item) && (!_item->base.view) && (_item->itc->func.get))
|
||||
{
|
||||
_item->o = _item->itc->func.get((void*)_item->data, obj);
|
||||
evas_object_smart_member_add(_item->o, obj);
|
||||
_item->base.view = _item->itc->func.get((void*)_item->base.data, obj);
|
||||
evas_object_smart_member_add(_item->base.view, obj);
|
||||
_item->l_built = eina_list_append(NULL, _item);
|
||||
wd->items_built = eina_list_merge(wd->items_built, _item->l_built);
|
||||
evas_object_hide(_item->o);
|
||||
evas_object_hide(_item->base.view);
|
||||
}
|
||||
else if ((_item) && (_item->l_built))
|
||||
wd->items_built = eina_list_demote_list(wd->items_built, _item->l_built);
|
||||
|
||||
_item = _item_prev_get(item);
|
||||
if ((_item) && (!_item->o) && (_item->itc->func.get))
|
||||
if ((_item) && (!_item->base.view) && (_item->itc->func.get))
|
||||
{
|
||||
_item->o = _item->itc->func.get((void*)_item->data, obj);
|
||||
evas_object_smart_member_add(_item->o, obj);
|
||||
_item->base.view = _item->itc->func.get((void*)_item->base.data, obj);
|
||||
evas_object_smart_member_add(_item->base.view, obj);
|
||||
_item->l_built = eina_list_append(NULL, _item);
|
||||
wd->items_built = eina_list_merge(wd->items_built, _item->l_built);
|
||||
evas_object_hide(_item->o);
|
||||
evas_object_hide(_item->base.view);
|
||||
}
|
||||
else if ((_item) && (_item->l_built))
|
||||
wd->items_built = eina_list_demote_list(wd->items_built, _item->l_built);
|
||||
|
@ -177,9 +174,9 @@ _item_realize(Elm_Slideshow_Item *item)
|
|||
_item = eina_list_data_get(wd->items_built);
|
||||
wd->items_built = eina_list_remove_list(wd->items_built, wd->items_built);
|
||||
if(item->itc->func.del)
|
||||
item->itc->func.del((void*)item->data, _item->o);
|
||||
evas_object_del(_item->o);
|
||||
_item->o = NULL;
|
||||
item->itc->func.del((void*)item->base.data, _item->base.view);
|
||||
evas_object_del(_item->base.view);
|
||||
_item->base.view = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -193,21 +190,21 @@ _end(void *data, Evas_Object *obj __UNUSED__, const char *emission __UNUSED__, c
|
|||
item = wd->previous;
|
||||
if(item)
|
||||
{
|
||||
edje_object_part_unswallow(NULL, item->o);
|
||||
evas_object_hide(item->o);
|
||||
edje_object_part_unswallow(NULL, item->base.view);
|
||||
evas_object_hide(item->base.view);
|
||||
wd->previous = NULL;
|
||||
}
|
||||
|
||||
|
||||
item = wd->current;
|
||||
if (!item || !item->o) return;
|
||||
if (!item || !item->base.view) return;
|
||||
|
||||
_item_realize(item);
|
||||
edje_object_part_unswallow(NULL, item->o);
|
||||
evas_object_show(item->o);
|
||||
edje_object_part_unswallow(NULL, item->base.view);
|
||||
evas_object_show(item->base.view);
|
||||
|
||||
edje_object_signal_emit(wd->slideshow, "anim,end", "slideshow");
|
||||
edje_object_part_swallow(wd->slideshow, "elm.swallow.1", item->o);
|
||||
edje_object_part_swallow(wd->slideshow, "elm.swallow.1", item->base.view);
|
||||
}
|
||||
|
||||
|
||||
|
@ -293,10 +290,9 @@ elm_slideshow_item_add(Evas_Object *obj, const Elm_Slideshow_Item_Class *itc, co
|
|||
Widget_Data *wd = elm_widget_data_get(obj);
|
||||
|
||||
if (!wd) return NULL;
|
||||
item = calloc(1, sizeof(Elm_Slideshow_Item));
|
||||
item->data = data;
|
||||
item = elm_widget_item_new(obj, Elm_Slideshow_Item);
|
||||
item->base.data = data;
|
||||
item->itc = itc;
|
||||
item->obj = obj;
|
||||
item->l = eina_list_append(item->l, item);
|
||||
|
||||
wd->items = eina_list_merge(wd->items, item->l);
|
||||
|
@ -322,22 +318,22 @@ elm_slideshow_show(Elm_Slideshow_Item *item)
|
|||
Widget_Data *wd;
|
||||
if (!item)
|
||||
return;
|
||||
ELM_CHECK_WIDTYPE(item->obj, widtype);
|
||||
wd = elm_widget_data_get(item->obj);
|
||||
ELM_CHECK_WIDTYPE(item->base.widget, widtype);
|
||||
wd = elm_widget_data_get(item->base.widget);
|
||||
if (!wd)
|
||||
return;
|
||||
if (item == wd->current)
|
||||
return;
|
||||
|
||||
next = item;
|
||||
_end(item->obj, item->obj, NULL, NULL);
|
||||
_end(item->base.widget, item->base.widget, NULL, NULL);
|
||||
|
||||
if (wd->timer) ecore_timer_del(wd->timer);
|
||||
if (wd->timeout > 0)
|
||||
wd->timer = ecore_timer_add(wd->timeout, _timer_cb, item->obj);
|
||||
wd->timer = ecore_timer_add(wd->timeout, _timer_cb, item->base.widget);
|
||||
_item_realize(next);
|
||||
edje_object_part_swallow(wd->slideshow, "elm.swallow.2", next->o);
|
||||
evas_object_show(next->o);
|
||||
edje_object_part_swallow(wd->slideshow, "elm.swallow.2", next->base.view);
|
||||
evas_object_show(next->base.view);
|
||||
snprintf(buf, sizeof(buf), "%s,next", wd->transition);
|
||||
edje_object_signal_emit(wd->slideshow, buf, "slideshow");
|
||||
wd->previous = wd->current;
|
||||
|
@ -376,8 +372,8 @@ elm_slideshow_next(Evas_Object *obj)
|
|||
|
||||
_item_realize(next);
|
||||
|
||||
edje_object_part_swallow(wd->slideshow, "elm.swallow.2", next->o);
|
||||
evas_object_show(next->o);
|
||||
edje_object_part_swallow(wd->slideshow, "elm.swallow.2", next->base.view);
|
||||
evas_object_show(next->base.view);
|
||||
|
||||
snprintf(buf, sizeof(buf), "%s,next", wd->transition);
|
||||
edje_object_signal_emit(wd->slideshow, buf, "slideshow");
|
||||
|
@ -416,8 +412,8 @@ elm_slideshow_previous(Evas_Object *obj)
|
|||
|
||||
_item_realize(prev);
|
||||
|
||||
edje_object_part_swallow(wd->slideshow, "elm.swallow.2", prev->o);
|
||||
evas_object_show(prev->o);
|
||||
edje_object_part_swallow(wd->slideshow, "elm.swallow.2", prev->base.view);
|
||||
evas_object_show(prev->base.view);
|
||||
|
||||
snprintf(buf, 1024, "%s,previous", wd->transition);
|
||||
edje_object_signal_emit(wd->slideshow, buf, "slideshow");
|
||||
|
@ -623,15 +619,16 @@ elm_slideshow_clear(Evas_Object *obj)
|
|||
wd->current = NULL;
|
||||
EINA_LIST_FREE(wd->items_built, item)
|
||||
{
|
||||
if (item->itc->func.del)
|
||||
item->itc->func.del((void*)item->data, item->o);
|
||||
evas_object_del(item->o);
|
||||
if (item->itc->func.del)
|
||||
item->itc->func.del((void*)item->base.data, item->base.view);
|
||||
evas_object_del(item->base.view);
|
||||
item->base.view = NULL;
|
||||
}
|
||||
|
||||
EINA_LIST_FREE(wd->items, item)
|
||||
{
|
||||
free(item);
|
||||
}
|
||||
{
|
||||
elm_widget_item_del(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -646,7 +643,7 @@ EAPI void
|
|||
elm_slideshow_item_del(Elm_Slideshow_Item *item)
|
||||
{
|
||||
if (!item) return;
|
||||
Widget_Data *wd = elm_widget_data_get(item->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(item->base.widget);
|
||||
if (!wd) return;
|
||||
if (wd->previous == item) wd->previous = NULL;
|
||||
if (wd->current == item)
|
||||
|
@ -663,10 +660,10 @@ elm_slideshow_item_del(Elm_Slideshow_Item *item)
|
|||
wd->items = eina_list_remove_list(wd->items, item->l);
|
||||
wd->items_built = eina_list_remove_list(wd->items_built, item->l_built);
|
||||
|
||||
if (item->o && item->itc->func.del)
|
||||
item->itc->func.del((void*)item->data, wd->previous->o);
|
||||
if (item->o)
|
||||
evas_object_del(item->o);
|
||||
if (item->base.view && item->itc->func.del)
|
||||
item->itc->func.del((void*)item->base.data, wd->previous->base.view);
|
||||
if (item->base.view)
|
||||
evas_object_del(item->base.view);
|
||||
free(item);
|
||||
}
|
||||
|
||||
|
@ -716,7 +713,7 @@ EAPI Evas_Object *
|
|||
elm_slideshow_item_object_get(Elm_Slideshow_Item * item)
|
||||
{
|
||||
if (!item) return NULL;
|
||||
return item->o;
|
||||
return item->base.view;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -730,6 +727,5 @@ elm_slideshow_item_object_get(Elm_Slideshow_Item * item)
|
|||
EAPI void *
|
||||
elm_slideshow_item_data_get(Elm_Slideshow_Item * item)
|
||||
{
|
||||
if (!item) return NULL;
|
||||
return (void *)item->data;
|
||||
return elm_widget_item_data_get(item);
|
||||
}
|
||||
|
|
|
@ -23,13 +23,10 @@ struct _Widget_Data
|
|||
|
||||
struct _Elm_Toolbar_Item
|
||||
{
|
||||
Evas_Object *obj;
|
||||
Evas_Object *base;
|
||||
Elm_Widget_Item base;
|
||||
const char *label;
|
||||
Evas_Object *icon;
|
||||
Evas_Smart_Cb func;
|
||||
Evas_Smart_Cb del_cb;
|
||||
const void *data;
|
||||
Eina_Bool selected : 1;
|
||||
Eina_Bool disabled : 1;
|
||||
Eina_Bool separator : 1;
|
||||
|
@ -53,12 +50,12 @@ static void _layout(Evas_Object *o, Evas_Object_Box_Data *priv, void *data);
|
|||
static void
|
||||
_item_show(Elm_Toolbar_Item *it)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
Evas_Coord x, y, w, h, bx, by;
|
||||
|
||||
if (!wd) return;
|
||||
evas_object_geometry_get(wd->bx, &bx, &by, NULL, NULL);
|
||||
evas_object_geometry_get(it->base, &x, &y, &w, &h);
|
||||
evas_object_geometry_get(it->base.view, &x, &y, &w, &h);
|
||||
elm_smart_scroller_child_region_show(wd->scr, x - bx, y - by, w, h);
|
||||
}
|
||||
|
||||
|
@ -66,7 +63,7 @@ static void
|
|||
_item_select(Elm_Toolbar_Item *it)
|
||||
{
|
||||
Elm_Toolbar_Item *it2;
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
Evas_Object *obj2;
|
||||
const Eina_List *l;
|
||||
|
||||
|
@ -77,25 +74,26 @@ _item_select(Elm_Toolbar_Item *it)
|
|||
if (it2->selected)
|
||||
{
|
||||
it2->selected = EINA_FALSE;
|
||||
edje_object_signal_emit(it2->base, "elm,state,unselected", "elm");
|
||||
edje_object_signal_emit
|
||||
(it2->base.view, "elm,state,unselected", "elm");
|
||||
break;
|
||||
}
|
||||
}
|
||||
it->selected = EINA_TRUE;
|
||||
edje_object_signal_emit(it->base, "elm,state,selected", "elm");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,selected", "elm");
|
||||
_item_show(it);
|
||||
obj2 = it->obj;
|
||||
obj2 = it->base.widget;
|
||||
if(it->menu)
|
||||
{
|
||||
evas_object_show(it->o_menu);
|
||||
evas_object_event_callback_add(it->base, EVAS_CALLBACK_RESIZE,
|
||||
evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_RESIZE,
|
||||
_menu_move_resize, it);
|
||||
evas_object_event_callback_add(it->base, EVAS_CALLBACK_MOVE,
|
||||
evas_object_event_callback_add(it->base.view, EVAS_CALLBACK_MOVE,
|
||||
_menu_move_resize, it);
|
||||
|
||||
_menu_move_resize(it, NULL, NULL, NULL);
|
||||
}
|
||||
if (it->func) it->func((void *)(it->data), it->obj, it);
|
||||
if (it->func) it->func((void *)(it->base.data), it->base.widget, it);
|
||||
evas_object_smart_callback_call(obj2, "clicked", it);
|
||||
}
|
||||
|
||||
|
@ -103,7 +101,7 @@ static void
|
|||
_menu_hide(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Elm_Toolbar_Item *it = data;
|
||||
elm_toolbar_item_unselect_all(it->obj);
|
||||
elm_toolbar_item_unselect_all(it->base.widget);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -119,25 +117,25 @@ _menu_move_resize(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, v
|
|||
{
|
||||
Elm_Toolbar_Item *it = data;
|
||||
Evas_Coord x,y,w,h;
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
|
||||
if ((!wd) || (!wd->menu_parent)) return;
|
||||
evas_object_geometry_get(it->base, &x, &y, &w, &h);
|
||||
evas_object_geometry_get(it->base.view, &x, &y, &w, &h);
|
||||
elm_menu_move(it->o_menu, x, y+h);
|
||||
}
|
||||
|
||||
static void
|
||||
_item_disable(Elm_Toolbar_Item *it, Eina_Bool disabled)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
|
||||
if (!wd) return;
|
||||
if (it->disabled == disabled) return;
|
||||
it->disabled = disabled;
|
||||
if (it->disabled)
|
||||
edje_object_signal_emit(it->base, "elm,state,disabled", "elm");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,disabled", "elm");
|
||||
else
|
||||
edje_object_signal_emit(it->base, "elm,state,enabled", "elm");
|
||||
edje_object_signal_emit(it->base.view, "elm,state,enabled", "elm");
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -149,12 +147,11 @@ _del_pre_hook(Evas_Object *obj)
|
|||
if (!wd) return;
|
||||
EINA_LIST_FREE(wd->items, it)
|
||||
{
|
||||
if (it->del_cb) it->del_cb((void *)it->data, it->obj, it);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
eina_stringshare_del(it->label);
|
||||
if (it->icon) evas_object_del(it->icon);
|
||||
if ((!wd->menu_parent) && (it->o_menu)) evas_object_del(it->o_menu);
|
||||
evas_object_del(it->base);
|
||||
free(it);
|
||||
elm_widget_item_del(it);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -182,16 +179,17 @@ _theme_hook(Evas_Object *obj)
|
|||
// edje_object_scale_set(wd->scr, scale);
|
||||
EINA_LIST_FOREACH(wd->items, l, it)
|
||||
{
|
||||
Evas_Object *view = it->base.view;
|
||||
Evas_Coord mw, mh;
|
||||
|
||||
edje_object_scale_set(it->base, scale);
|
||||
edje_object_scale_set(view, scale);
|
||||
if (!it->separator)
|
||||
{
|
||||
if (it->selected)
|
||||
edje_object_signal_emit(it->base, "elm,state,selected", "elm");
|
||||
edje_object_signal_emit(view, "elm,state,selected", "elm");
|
||||
if (it->disabled)
|
||||
edje_object_signal_emit(it->base, "elm,state,disabled", "elm");
|
||||
_elm_theme_object_set(obj, it->base, "toolbar", "item", style);
|
||||
edje_object_signal_emit(view, "elm,state,disabled", "elm");
|
||||
_elm_theme_object_set(obj, view, "toolbar", "item", style);
|
||||
if (it->icon)
|
||||
{
|
||||
int ms = 0;
|
||||
|
@ -199,21 +197,21 @@ _theme_hook(Evas_Object *obj)
|
|||
ms = ((double)wd->icon_size * _elm_config->scale);
|
||||
evas_object_size_hint_min_set(it->icon, ms, ms);
|
||||
evas_object_size_hint_max_set(it->icon, ms, ms);
|
||||
edje_object_part_swallow(it->base, "elm.swallow.icon",
|
||||
edje_object_part_swallow(view, "elm.swallow.icon",
|
||||
it->icon);
|
||||
}
|
||||
edje_object_part_text_set(it->base, "elm.text", it->label);
|
||||
edje_object_part_text_set(view, "elm.text", it->label);
|
||||
}
|
||||
else
|
||||
_elm_theme_object_set(obj, it->base, "toolbar", "separator", style);
|
||||
_elm_theme_object_set(obj, view, "toolbar", "separator", style);
|
||||
|
||||
mw = mh = -1;
|
||||
if (!it->separator)
|
||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||
edje_object_size_min_restricted_calc(it->base, &mw, &mh, mw, mh);
|
||||
edje_object_size_min_restricted_calc(view, &mw, &mh, mw, mh);
|
||||
if (!it->separator)
|
||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||
evas_object_size_hint_min_set(it->base, mw, mh);
|
||||
evas_object_size_hint_min_set(view, mw, mh);
|
||||
}
|
||||
_sizing_eval(obj);
|
||||
}
|
||||
|
@ -403,20 +401,20 @@ elm_toolbar_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, Eva
|
|||
Elm_Toolbar_Item *it;
|
||||
|
||||
if (!wd) return NULL;
|
||||
it = ELM_NEW(Elm_Toolbar_Item);
|
||||
it = elm_widget_item_new(obj, Elm_Toolbar_Item);
|
||||
if (!it) return NULL;
|
||||
wd->items = eina_list_append(wd->items, it);
|
||||
it->obj = obj;
|
||||
it->label = eina_stringshare_add(label);
|
||||
it->icon = icon;
|
||||
it->func = func;
|
||||
it->data = data;
|
||||
it->separator = EINA_FALSE;
|
||||
it->base = edje_object_add(evas_object_evas_get(obj));
|
||||
_elm_theme_object_set(obj, it->base, "toolbar", "item", elm_widget_style_get(obj));
|
||||
edje_object_signal_callback_add(it->base, "elm,action,click", "elm",
|
||||
it->base.data = data;
|
||||
it->base.view = edje_object_add(evas_object_evas_get(obj));
|
||||
_elm_theme_object_set
|
||||
(obj, it->base.view, "toolbar", "item", elm_widget_style_get(obj));
|
||||
edje_object_signal_callback_add(it->base.view, "elm,action,click", "elm",
|
||||
_select, it);
|
||||
elm_widget_sub_object_add(obj, it->base);
|
||||
elm_widget_sub_object_add(obj, it->base.view);
|
||||
if (it->icon)
|
||||
{
|
||||
int ms = 0;
|
||||
|
@ -424,20 +422,20 @@ elm_toolbar_item_add(Evas_Object *obj, Evas_Object *icon, const char *label, Eva
|
|||
ms = ((double)wd->icon_size * _elm_config->scale);
|
||||
evas_object_size_hint_min_set(it->icon, ms, ms);
|
||||
evas_object_size_hint_max_set(it->icon, ms, ms);
|
||||
edje_object_part_swallow(it->base, "elm.swallow.icon", it->icon);
|
||||
edje_object_part_swallow(it->base.view, "elm.swallow.icon", it->icon);
|
||||
evas_object_show(it->icon);
|
||||
elm_widget_sub_object_add(obj, it->icon);
|
||||
}
|
||||
edje_object_part_text_set(it->base, "elm.text", it->label);
|
||||
edje_object_part_text_set(it->base.view, "elm.text", it->label);
|
||||
mw = mh = -1;
|
||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||
edje_object_size_min_restricted_calc(it->base, &mw, &mh, mw, mh);
|
||||
edje_object_size_min_restricted_calc(it->base.view, &mw, &mh, mw, mh);
|
||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||
evas_object_size_hint_weight_set(it->base, -1.0, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(it->base, 0.5, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_min_set(it->base, mw, mh);
|
||||
evas_object_box_append(wd->bx, it->base);
|
||||
evas_object_show(it->base);
|
||||
evas_object_size_hint_weight_set(it->base.view, -1.0, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(it->base.view, 0.5, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_min_set(it->base.view, mw, mh);
|
||||
evas_object_box_append(wd->bx, it->base.view);
|
||||
evas_object_show(it->base.view);
|
||||
_sizing_eval(obj);
|
||||
return it;
|
||||
}
|
||||
|
@ -502,14 +500,14 @@ elm_toolbar_item_label_set(Elm_Toolbar_Item *item, const char *label)
|
|||
|
||||
if (!item) return;
|
||||
eina_stringshare_replace(&item->label, label);
|
||||
edje_object_part_text_set(item->base, "elm.text", item->label);
|
||||
edje_object_part_text_set(item->base.view, "elm.text", item->label);
|
||||
|
||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||
edje_object_size_min_restricted_calc(item->base, &mw, &mh, mw, mh);
|
||||
edje_object_size_min_restricted_calc(item->base.view, &mw, &mh, mw, mh);
|
||||
elm_coords_finger_size_adjust(1, &mw, 1, &mh);
|
||||
evas_object_size_hint_weight_set(item->base, -1.0, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(item->base, 0.5, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_min_set(item->base, mw, mh);
|
||||
evas_object_size_hint_weight_set(item->base.view, -1.0, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(item->base.view, 0.5, EVAS_HINT_FILL);
|
||||
evas_object_size_hint_min_set(item->base.view, mw, mh);
|
||||
}
|
||||
|
||||
|
||||
|
@ -523,16 +521,15 @@ elm_toolbar_item_label_set(Elm_Toolbar_Item *item, const char *label)
|
|||
EAPI void
|
||||
elm_toolbar_item_del(Elm_Toolbar_Item *it)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(it->obj);
|
||||
Evas_Object *obj2 = it->obj;
|
||||
Widget_Data *wd = elm_widget_data_get(it->base.widget);
|
||||
Evas_Object *obj2 = it->base.widget;
|
||||
|
||||
if ((!wd) || (!it)) return;
|
||||
if (it->del_cb) it->del_cb((void *)it->data, it->obj, it);
|
||||
elm_widget_item_pre_notify_del(it);
|
||||
wd->items = eina_list_remove(wd->items, it);
|
||||
eina_stringshare_del(it->label);
|
||||
if (it->icon) evas_object_del(it->icon);
|
||||
evas_object_del(it->base);
|
||||
free(it);
|
||||
elm_widget_item_del(it);
|
||||
_theme_hook(obj2);
|
||||
}
|
||||
|
||||
|
@ -547,7 +544,7 @@ elm_toolbar_item_del(Elm_Toolbar_Item *it)
|
|||
EAPI void
|
||||
elm_toolbar_item_del_cb_set(Elm_Toolbar_Item *it, Evas_Smart_Cb func)
|
||||
{
|
||||
it->del_cb = func;
|
||||
elm_widget_item_del_cb_set(it, func);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -608,7 +605,7 @@ elm_toolbar_item_separator_set(Elm_Toolbar_Item *item, Eina_Bool separator)
|
|||
if (!item) return;
|
||||
if (item->separator == separator) return;
|
||||
item->separator = separator;
|
||||
_theme_hook(item->obj);
|
||||
_theme_hook(item->base.view);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -765,7 +762,8 @@ elm_toolbar_item_unselect_all(Evas_Object *obj)
|
|||
if (it->selected)
|
||||
{
|
||||
it->selected = EINA_FALSE;
|
||||
edje_object_signal_emit(it->base, "elm,state,unselected", "elm");
|
||||
edje_object_signal_emit
|
||||
(it->base.view, "elm,state,unselected", "elm");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -783,7 +781,7 @@ elm_toolbar_item_unselect(Elm_Toolbar_Item *item)
|
|||
{
|
||||
if ((!item) || (!item->selected)) return;
|
||||
item->selected = EINA_FALSE;
|
||||
edje_object_signal_emit(item->base, "elm,state,unselected", "elm");
|
||||
edje_object_signal_emit(item->base.view, "elm,state,unselected", "elm");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -835,14 +833,14 @@ elm_toolbar_align_get(const Evas_Object *obj)
|
|||
EAPI void
|
||||
elm_toolbar_item_menu_set(Elm_Toolbar_Item *item, Eina_Bool menu)
|
||||
{
|
||||
Widget_Data *wd = elm_widget_data_get(item->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(item->base.widget);
|
||||
|
||||
if ((!wd) || (!item)) return;
|
||||
if (item->menu == menu) return;
|
||||
item->menu = menu;
|
||||
if (menu)
|
||||
{
|
||||
item->o_menu = elm_menu_add(item->base);
|
||||
item->o_menu = elm_menu_add(item->base.view);
|
||||
if (wd->menu_parent)
|
||||
elm_menu_parent_set(item->o_menu, wd->menu_parent);
|
||||
evas_object_event_callback_add(item->o_menu, EVAS_CALLBACK_HIDE,
|
||||
|
@ -869,7 +867,7 @@ EAPI Evas_Object *
|
|||
elm_toolbar_item_menu_get(Elm_Toolbar_Item *item)
|
||||
{
|
||||
if (!item) return NULL;
|
||||
Widget_Data *wd = elm_widget_data_get(item->obj);
|
||||
Widget_Data *wd = elm_widget_data_get(item->base.widget);
|
||||
if (!wd) return NULL;
|
||||
elm_toolbar_item_menu_set(item, 1);
|
||||
return item->o_menu;
|
||||
|
|
Loading…
Reference in New Issue