MULTIBUTTONENTRY_POS_END,
MULTIBUTTONENTRY_POS_BEFORE,
MULTIBUTTONENTRY_POS_AFTER,
- MULTIBUTTONENTRY_POS_NUM
} Multibuttonentry_Pos;
typedef enum _Multibuttonentry_Button_State
{
MULTIBUTTONENTRY_BUTTON_STATE_DEFAULT,
MULTIBUTTONENTRY_BUTTON_STATE_SELECTED,
- MULTIBUTTONENTRY_BUTTON_STATE_NUM
} Multibuttonentry_Button_State;
+
typedef enum _MultiButtonEntry_Closed_Button_Type
{
MULTIBUTTONENTRY_CLOSED_IMAGE,
Evas_Object *button;
Evas_Coord vw, rw; // vw: visual width, real width
Eina_Bool visible: 1;
+ Evas_Smart_Cb func;
};
typedef struct _Elm_Multibuttonentry_Item_Filter
static void _del_button_obj(Evas_Object *obj, Evas_Object *btn);
static void _del_button_item(Elm_Multibuttonentry_Item *item);
static void _select_button(Evas_Object *obj, Evas_Object *btn);
-static Elm_Object_Item *_add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, const void *ref, void *data);
+static Elm_Object_Item *_add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, const void *ref, Evas_Smart_Cb func, void *data);
static void _evas_mbe_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
static void _entry_changed_cb(void *data, Evas_Object *obj, void *event_info);
static void _entry_key_up_cb(void *data, Evas *e, Evas_Object *obj, void *event_info);
}
static Elm_Object_Item*
-_add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, const void *ref, void *data)
+_add_button_item(Evas_Object *obj, const char *str, Multibuttonentry_Pos pos, const void *ref, Evas_Smart_Cb func, void *data)
{
Elm_Multibuttonentry_Item *item;
Elm_Multibuttonentry_Item_Filter *item_filter;
item->vw = vw;
item->visible = EINA_TRUE;
+ if (func)
+ {
+ item->func = func;
+ }
+
switch (pos)
{
case MULTIBUTTONENTRY_POS_START:
if ((strcmp(str, "") != 0) && (strcmp(ev->keyname, "KP_Enter") == 0 || strcmp(ev->keyname, "Return") == 0 ))
{
- _add_button_item(data, str, MULTIBUTTONENTRY_POS_END, NULL, NULL);
+ _add_button_item(data, str, MULTIBUTTONENTRY_POS_END, NULL, NULL, NULL);
wd->n_str = 0;
}
}
str = elm_object_text_get(wd->entry);
if (strlen(str))
- _add_button_item(data, str, MULTIBUTTONENTRY_POS_END, NULL, NULL);
+ _add_button_item(data, str, MULTIBUTTONENTRY_POS_END, NULL, NULL, NULL);
}
static void
Evas_Coord mnw, mnh, cw = 0, cmaxh = 0, w, ww;
const Eina_List *l;
Evas_Object_Box_Option *opt;
- int index = 0;
+ int local_index = 0;
double wx;
evas_object_geometry_get(box, NULL, NULL, &w, NULL);
if ((cw + ww) > w)
{
- if (index > obj_index) return cmaxh;
+ if (local_index > obj_index) return cmaxh;
cw = 0;
cmaxh = 0;
}
cw += ww;
if (cmaxh < mnh) cmaxh = mnh;
- index++;
+ local_index++;
}
return cmaxh;
}
EAPI Elm_Object_Item *
-elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, void *data)
+elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data)
{
- return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_START, NULL, data);
+ return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_START, NULL, func, data);
}
EAPI Elm_Object_Item *
-elm_multibuttonentry_item_append(Evas_Object *obj, const char *label, void *data)
+elm_multibuttonentry_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data)
{
- return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_END, NULL, data);
+ return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_END, NULL, func, data);
}
EAPI Elm_Object_Item *
-elm_multibuttonentry_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, void *data)
+elm_multibuttonentry_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, Evas_Smart_Cb func, void *data)
{
- return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_BEFORE, before, data);
+ return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_BEFORE, before, func, data);
}
EAPI Elm_Object_Item *
-elm_multibuttonentry_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *label, void *data)
+elm_multibuttonentry_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *label, Evas_Smart_Cb func, void *data)
{
- return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_AFTER, after, data);
+ return _add_button_item(obj, label, MULTIBUTTONENTRY_POS_AFTER, after, func, data);
}
EAPI const Eina_List *
* of addresses, each of which is an item that can be clicked for further actions.
*
* Smart callbacks one can register:
- * XXX: remove "item,selected". use callback from item_append/prepend instead. (discussed with MBE contributor)
* - @c "item,selected" - when item is selected. May be called on backspace key.
* - @c "item,added" - when a new multibuttonentry item is added.
* - @c "item,deleted" - when a multibuttonentry item is deleted.
- * XXX: remove "item,clicked". use callback from item_append/prepend instead. (discussed with MBE contributor)
* - @c "item,clicked" - selected item of multibuttonentry is clicked.
* - @c "clicked" - when multibuttonentry is clicked.
* - @c "focused" - when multibuttonentry is focused.
* - @c "unfocused" - when multibuttonentry is unfocused.
* - @c "expanded" - when multibuttonentry is expanded.
* - @c "contracted" - when multibuttonentry is contracted.
- * XXX: change "shrink,state,changed" to "expand,state,changed"
* - @c "shrink,state,changed" - when shrink mode state of multibuttonentry is
* changed.
*
*
* @ingroup Multibuttonentry
*/
-EAPI Elm_Object_Item *elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, void *data);
+EAPI Elm_Object_Item *elm_multibuttonentry_item_prepend(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data);
/**
* Append a new item to the multibuttonentry
*
* @ingroup Multibuttonentry
*/
-EAPI Elm_Object_Item *elm_multibuttonentry_item_append(Evas_Object *obj, const char *label, void *data);
+EAPI Elm_Object_Item *elm_multibuttonentry_item_append(Evas_Object *obj, const char *label, Evas_Smart_Cb func, void *data);
/**
* Add a new item to the multibuttonentry before the indicated object
*
* @ingroup Multibuttonentry
*/
-EAPI Elm_Object_Item *elm_multibuttonentry_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, void *data);
+EAPI Elm_Object_Item *elm_multibuttonentry_item_insert_before(Evas_Object *obj, Elm_Object_Item *before, const char *label, Evas_Smart_Cb func, void *data);
/**
* Add a new item to the multibuttonentry after the indicated object
*
* @ingroup Multibuttonentry
*/
-EAPI Elm_Object_Item *elm_multibuttonentry_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *label, void *data);
+EAPI Elm_Object_Item *elm_multibuttonentry_item_insert_after(Evas_Object *obj, Elm_Object_Item *after, const char *label, Evas_Smart_Cb func, void *data);
/**
* Get a list of items in the multibuttonentry