}
static void
-_item_new(Elm_Ctxpopup_Item_Data *item,
+_item_theme_set(Elm_Ctxpopup_Item_Data *item,
char *group_name)
{
ELM_CTXPOPUP_DATA_GET(WIDGET(item), sd);
sd->items = NULL;
}
+static void
+_items_sizing_eval(Evas_Object *obj,
+ Elm_Ctxpopup_Data *sd)
+{
+ Elm_Ctxpopup_Item_Data *it;
+ Eina_List *elist;
+ int idx = 0;
+
+ sd->dir = ELM_CTXPOPUP_DIRECTION_UNKNOWN;
+
+ if (sd->visible)
+ {
+ EINA_LIST_FOREACH(sd->items, elist, it)
+ {
+ if (idx++ == 0)
+ edje_object_signal_emit(VIEW(it), "elm,state,default", "elm");
+ else
+ edje_object_signal_emit(VIEW(it), "elm,state,separator", "elm");
+ }
+ elm_layout_sizing_eval(obj);
+ }
+}
+
static void
_item_sizing_eval(Elm_Ctxpopup_Item_Data *item)
{
eo_do_super(eo_ctxpopup_it, ELM_CTXPOPUP_ITEM_CLASS, eo_destructor());
}
-EOLIAN static Elm_Object_Item*
-_elm_ctxpopup_item_append(Eo *obj, Elm_Ctxpopup_Data *sd, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)
+static Elm_Ctxpopup_Item_Data *
+_item_new(Evas_Object *obj,
+ Elm_Ctxpopup_Data *sd,
+ const char *label,
+ Evas_Object *icon,
+ Evas_Smart_Cb func,
+ const void *data)
{
- Elm_Ctxpopup_Item_Data *it;
Evas_Object *content, *focus_bt;
- int idx = 0;
- Eina_List *elist;
Eo *eo_item;
eo_item = eo_add(ELM_CTXPOPUP_ITEM_CLASS, obj, elm_obj_ctxpopup_item_init(func, data));
if (icon && label)
{
if (!sd->horizontal)
- _item_new(item, "icon_text_style_item");
+ _item_theme_set(item, "icon_text_style_item");
else
- _item_new(item, "icon_text_style_item_horizontal");
+ _item_theme_set(item, "icon_text_style_item_horizontal");
}
else if (label)
{
if (!sd->horizontal)
- _item_new(item, "text_style_item");
+ _item_theme_set(item, "text_style_item");
else
- _item_new(item, "text_style_item_horizontal");
+ _item_theme_set(item, "text_style_item_horizontal");
}
else
{
if (!sd->horizontal)
- _item_new(item, "icon_style_item");
+ _item_theme_set(item, "icon_style_item");
else
- _item_new(item, "icon_style_item_horizontal");
+ _item_theme_set(item, "icon_style_item_horizontal");
}
_item_icon_set(item, icon);
_item_label_set(item, label);
focus_bt = _item_in_focusable_button(item);
- elm_box_pack_end(sd->box, focus_bt);
- sd->items = eina_list_append(sd->items, item);
item->btn = focus_bt;
_elm_widget_color_class_parent_set(VIEW(item), obj);
- sd->dir = ELM_CTXPOPUP_DIRECTION_UNKNOWN;
+ if (_elm_config->access_mode) _access_focusable_button_register(focus_bt, item);
- if (sd->visible)
- {
- EINA_LIST_FOREACH(sd->items, elist, it)
- {
- if (idx++ == 0)
- edje_object_signal_emit(VIEW(it), "elm,state,default", "elm");
- else
- edje_object_signal_emit(VIEW(it), "elm,state,separator", "elm");
- }
- elm_layout_sizing_eval(obj);
- }
+ return item;
+}
- if (_elm_config->access_mode) _access_focusable_button_register(focus_bt, item);
+EOLIAN static Elm_Object_Item*
+_elm_ctxpopup_item_append(Eo *obj, Elm_Ctxpopup_Data *sd, const char *label, Evas_Object *icon, Evas_Smart_Cb func, const void *data)
+{
+ Elm_Ctxpopup_Item_Data *item;
+
+ item = _item_new(obj, sd, label, icon, func, data);
+ if (!item) return NULL;
+
+ elm_box_pack_end(sd->box, item->btn);
+ sd->items = eina_list_append(sd->items, item);
+
+ _items_sizing_eval(obj, sd);
+
+ return EO_OBJ(item);
+}
+
+EOLIAN static Elm_Object_Item*
+_elm_ctxpopup_item_prepend(Eo *obj EINA_UNUSED, Elm_Ctxpopup_Data *sd EINA_UNUSED, const char *label EINA_UNUSED, Evas_Object *icon EINA_UNUSED, Evas_Smart_Cb func EINA_UNUSED, const void *data EINA_UNUSED)
+{
+ Elm_Ctxpopup_Item_Data *item;
+
+ item = _item_new(obj, sd, label, icon, func, data);
+ if (!item) return NULL;
+
+ elm_box_pack_start(sd->box, item->btn);
+ sd->items = eina_list_prepend(sd->items, item);
+
+ _items_sizing_eval(obj, sd);
return EO_OBJ(item);
}
return eina_list_data_get(eina_list_last(sd->items));
}
-EOLIAN static Elm_Object_Item*
-_elm_ctxpopup_item_prepend(Eo *obj EINA_UNUSED, Elm_Ctxpopup_Data *sd EINA_UNUSED, const char *label EINA_UNUSED, Evas_Object *icon EINA_UNUSED, Evas_Smart_Cb func EINA_UNUSED, const void *data EINA_UNUSED)
-{
- // the feature not provided for mobile or wearable profile
- return NULL;
-}
-
EOLIAN static Elm_Object_Item *
_elm_ctxpopup_item_prev_get(Eo *eo_item EINA_UNUSED, Elm_Ctxpopup_Item_Data *item)
{