elementary/menu - Elm_Menu_Item -> Elm_Object_Item

SVN revision: 65596
This commit is contained in:
ChunEon Park 2011-11-25 10:57:39 +00:00
parent 058c062a8d
commit 468985fa84
8 changed files with 288 additions and 246 deletions

View File

@ -603,17 +603,18 @@ _map_move_resize_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__,
} }
static void static void
_populate(void *data, Elm_Menu_Item *item) _populate(void *data, Elm_Object_Item *menu_it)
{ {
int idx; int idx;
if ((!data) || (!item) || (!source_names)) return; if ((!data) || (!menu_it) || (!source_names)) return;
for (idx = 0; source_names[idx]; idx++) for (idx = 0; source_names[idx]; idx++)
{ {
if (idx >= SOURCE_MAX) break; if (idx >= SOURCE_MAX) break;
ms[idx].map = data; ms[idx].map = data;
ms[idx].source_name = strdup(source_names[idx]); ms[idx].source_name = strdup(source_names[idx]);
elm_menu_item_add(menu, item, "", source_names[idx], map_source, &ms[idx]); elm_menu_item_add(menu, menu_it, "", source_names[idx], map_source,
&ms[idx]);
} }
} }
@ -621,7 +622,7 @@ static void
_map_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info) _map_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event_info)
{ {
Evas_Event_Mouse_Down *down = event_info; Evas_Event_Mouse_Down *down = event_info;
Elm_Menu_Item *item; Elm_Object_Item *menu_it;
if (!down) return; if (!down) return;
if (down->button == 2) if (down->button == 2)
@ -633,8 +634,8 @@ _map_mouse_down(void *data, Evas *evas __UNUSED__, Evas_Object *obj, void *event
else if (down->button == 3) else if (down->button == 3)
{ {
menu = elm_menu_add(obj); menu = elm_menu_add(obj);
item = elm_menu_item_add(menu, NULL, NULL, "Source", NULL, NULL); menu_it = elm_menu_item_add(menu, NULL, NULL, "Source", NULL, NULL);
_populate(data, item); _populate(data, menu_it);
elm_menu_item_add(menu, NULL, NULL, "Show Urmatt", map_show_urmatt, data); elm_menu_item_add(menu, NULL, NULL, "Show Urmatt", map_show_urmatt, data);
elm_menu_item_add(menu, NULL, NULL, "Bring Seoul", map_bring_seoul, data); elm_menu_item_add(menu, NULL, NULL, "Bring Seoul", map_bring_seoul, data);
elm_menu_item_add(menu, NULL, NULL, "Paused Set", map_paused_set, data); elm_menu_item_add(menu, NULL, NULL, "Paused Set", map_paused_set, data);

View File

@ -15,80 +15,88 @@ _show(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_i
} }
static void static void
_populate_4(Elm_Menu_Item *item) _populate_4(Elm_Object_Item *menu_it)
{ {
Elm_Menu_Item *item2; Elm_Object_Item *menu_it2;
elm_menu_item_add(menu, item, "go-bottom", "menu 2", NULL, NULL); elm_menu_item_add(menu, menu_it, "go-bottom", "menu 2", NULL, NULL);
elm_menu_item_add(menu, item, "go-first", "menu 3", NULL, NULL); elm_menu_item_add(menu, menu_it, "go-first", "menu 3", NULL, NULL);
elm_menu_item_separator_add(menu, item); elm_menu_item_separator_add(menu, menu_it);
item2 = elm_menu_item_add(menu, item, "go-last", "Disabled item", NULL, NULL); menu_it2 = elm_menu_item_add(menu, menu_it, "go-last", "Disabled item", NULL,
elm_menu_item_disabled_set(item2, 1); NULL);
item2 = elm_menu_item_add(menu, item, "go-next", "Disabled item", NULL, NULL); elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
elm_menu_item_disabled_set(item2, 1); menu_it2 = elm_menu_item_add(menu, menu_it, "go-next", "Disabled item", NULL,
item2 = elm_menu_item_add(menu, item, "go-up", "Disabled item", NULL, NULL); NULL);
elm_menu_item_disabled_set(item2, 1); elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
menu_it2 = elm_menu_item_add(menu, menu_it, "go-up", "Disabled item", NULL,
NULL);
elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
} }
static void static void
_populate_3(Elm_Menu_Item *item) _populate_3(Elm_Object_Item *menu_it)
{ {
Elm_Menu_Item *item2; Elm_Object_Item *menu_it2;
elm_menu_item_add(menu, item, "media-eject", "menu 2", NULL, NULL); elm_menu_item_add(menu, menu_it, "media-eject", "menu 2", NULL, NULL);
elm_menu_item_add(menu, item, "media-playback-start", "menu 3", NULL, NULL); elm_menu_item_add(menu, menu_it, "media-playback-start", "menu 3", NULL,
elm_menu_item_separator_add(menu,item); NULL);
item2 = elm_menu_item_add(menu, item, "media-playback-stop", "Disabled item", NULL, NULL); elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_disabled_set(item2, 1); menu_it2 = elm_menu_item_add(menu, menu_it, "media-playback-stop",
"Disabled item", NULL, NULL);
elm_menu_item_disabled_set(menu_it2, EINA_TRUE);
} }
static void static void
_populate_2(Elm_Menu_Item *item) _populate_2(Elm_Object_Item *menu_it)
{ {
Elm_Menu_Item *item2, *item3; Elm_Object_Item *menu_it2, *menu_it3;
elm_menu_item_add(menu, item, "system-reboot", "menu 2", NULL, NULL); elm_menu_item_add(menu, menu_it, "system-reboot", "menu 2", NULL, NULL);
item2 = elm_menu_item_add(menu, item, "system-shutdown", "menu 3", NULL, NULL); menu_it2 = elm_menu_item_add(menu, menu_it, "system-shutdown", "menu 3",
NULL, NULL);
_populate_3(menu_it2);
_populate_3(item2); elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu,item); menu_it2 = elm_menu_item_add(menu, menu_it, "system-lock-screen", "menu 2",
elm_menu_item_separator_add(menu,item); NULL, NULL);
elm_menu_item_separator_add(menu,item); elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_separator_add(menu,item);
elm_menu_item_separator_add(menu,item);
elm_menu_item_separator_add(menu,item);
elm_menu_item_separator_add(menu,item);
item2 = elm_menu_item_add(menu, item, "system-lock-screen", "menu 2", NULL, NULL); menu_it3 = elm_menu_item_add(menu, menu_it, "system-run", "Disabled item",
elm_menu_item_separator_add(menu,item); NULL, NULL);
elm_menu_item_disabled_set(menu_it3, EINA_TRUE);
item3 = elm_menu_item_add(menu, item, "system-run", "Disabled item", NULL, NULL); _populate_4(menu_it2);
elm_menu_item_disabled_set(item3, 1);
_populate_4(item2);
} }
static void static void
_populate_1(Evas_Object *win, Elm_Menu_Item *item) _populate_1(Evas_Object *win, Elm_Object_Item *menu_it)
{ {
Elm_Menu_Item *item2; Elm_Object_Item *menu_it2;
Evas_Object *radio; Evas_Object *radio;
radio = elm_radio_add(win); radio = elm_radio_add(win);
elm_radio_state_value_set(radio, 0); elm_radio_state_value_set(radio, 0);
elm_radio_value_set(radio, 0); elm_radio_value_set(radio, 0);
elm_object_text_set(radio, "radio in menu"); elm_object_text_set(radio, "radio in menu");
item2 = elm_menu_item_add(menu, item, "object-rotate-left", "menu 1", NULL, NULL); menu_it2 = elm_menu_item_add(menu, menu_it, "object-rotate-left", "menu 1",
elm_menu_item_add_object(menu, item, radio, NULL, NULL); NULL, NULL);
elm_menu_item_add_object(menu, menu_it, radio, NULL, NULL);
_populate_2(item2); _populate_2(menu_it2);
} }
void void
test_menu(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__) test_menu(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
{ {
Elm_Menu_Item *item; Elm_Object_Item *menu_it;
win = elm_win_add(NULL, "menu", ELM_WIN_BASIC); win = elm_win_add(NULL, "menu", ELM_WIN_BASIC);
elm_win_title_set(win, "Menu"); elm_win_title_set(win, "Menu");
@ -107,10 +115,11 @@ test_menu(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info _
menu = elm_menu_add(win); menu = elm_menu_add(win);
elm_menu_item_add(menu, NULL, NULL, "first item", NULL, NULL); elm_menu_item_add(menu, NULL, NULL, "first item", NULL, NULL);
item = elm_menu_item_add(menu, NULL, "mail-reply-all", "second item", NULL, NULL); menu_it = elm_menu_item_add(menu, NULL, "mail-reply-all", "second item",
_populate_1(win, item); NULL, NULL);
_populate_1(win, menu_it);
elm_menu_item_add(menu, item, "window-new", "sub menu", NULL, NULL); elm_menu_item_add(menu, menu_it, "window-new", "sub menu", NULL, NULL);
evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _show, menu); evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _show, menu);

View File

@ -67,7 +67,7 @@ test_toolbar(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_inf
Evas_Object *win, *bg, *bx, *tb, *ph, *menu; Evas_Object *win, *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4; Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Toolbar_Item *item; Elm_Toolbar_Item *item;
Elm_Menu_Item *menu_item; Elm_Object_Item *menu_it;
char buf[PATH_MAX]; char buf[PATH_MAX];
win = elm_win_add(NULL, "toolbar", ELM_WIN_BASIC); win = elm_win_add(NULL, "toolbar", ELM_WIN_BASIC);
@ -118,8 +118,8 @@ test_toolbar(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_inf
menu = elm_toolbar_item_menu_get(item); menu = elm_toolbar_item_menu_get(item);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4); elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_item = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4); menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_item, "edit-paste", "is set to", tb_4, ph4); elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4); elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4);
elm_box_pack_end(bx, tb); elm_box_pack_end(bx, tb);
@ -177,7 +177,7 @@ test_toolbar2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
Evas_Object *win, *bg, *bx, *tb, *ph, *menu; Evas_Object *win, *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4; Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Toolbar_Item *item; Elm_Toolbar_Item *item;
Elm_Menu_Item *menu_item; Elm_Object_Item *menu_it;
char buf[PATH_MAX]; char buf[PATH_MAX];
win = elm_win_add(NULL, "toolbar2", ELM_WIN_BASIC); win = elm_win_add(NULL, "toolbar2", ELM_WIN_BASIC);
@ -228,8 +228,8 @@ test_toolbar2(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
menu = elm_toolbar_item_menu_get(item); menu = elm_toolbar_item_menu_get(item);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4); elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_item = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4); menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_item, "edit-paste", "is set to", tb_4, ph4); elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "Scroll", tb_5, ph4); elm_menu_item_add(menu, NULL, "edit-delete", "Scroll", tb_5, ph4);
elm_box_pack_end(bx, tb); elm_box_pack_end(bx, tb);
@ -287,7 +287,7 @@ test_toolbar3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
Evas_Object *win, *bg, *bx, *tb, *ph, *menu; Evas_Object *win, *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4; Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Toolbar_Item *item; Elm_Toolbar_Item *item;
Elm_Menu_Item *menu_item; Elm_Object_Item *menu_it;
char buf[PATH_MAX]; char buf[PATH_MAX];
win = elm_win_add(NULL, "toolbar3", ELM_WIN_BASIC); win = elm_win_add(NULL, "toolbar3", ELM_WIN_BASIC);
@ -338,15 +338,14 @@ test_toolbar3(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
menu = elm_toolbar_item_menu_get(item); menu = elm_toolbar_item_menu_get(item);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4); elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_item = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4); menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_item, "edit-paste", "is set to", tb_4, ph4); elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "None", tb_5, ph4); elm_menu_item_add(menu, NULL, "edit-delete", "None", tb_5, ph4);
elm_box_pack_end(bx, tb); elm_box_pack_end(bx, tb);
evas_object_show(tb); evas_object_show(tb);
tb = elm_table_add(win); tb = elm_table_add(win);
//elm_table_homogeneous_set(tb, 1);
evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
@ -398,7 +397,7 @@ test_toolbar4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
Evas_Object *win, *bg, *bx, *tb, *ph, *menu; Evas_Object *win, *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4; Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Toolbar_Item *item; Elm_Toolbar_Item *item;
Elm_Menu_Item *menu_item; Elm_Object_Item *menu_it;
char buf[PATH_MAX]; char buf[PATH_MAX];
win = elm_win_add(NULL, "toolbar4", ELM_WIN_BASIC); win = elm_win_add(NULL, "toolbar4", ELM_WIN_BASIC);
@ -449,8 +448,8 @@ test_toolbar4(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
menu = elm_toolbar_item_menu_get(item); menu = elm_toolbar_item_menu_get(item);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4); elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_item = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4); menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_item, "edit-paste", "is set to", tb_4, ph4); elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4); elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4);
elm_box_pack_end(bx, tb); elm_box_pack_end(bx, tb);
@ -508,7 +507,7 @@ test_toolbar5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
Evas_Object *win, *bg, *bx, *tb, *ph, *menu; Evas_Object *win, *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4; Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Toolbar_Item *item; Elm_Toolbar_Item *item;
Elm_Menu_Item *menu_item; Elm_Object_Item *menu_it;
char buf[PATH_MAX]; char buf[PATH_MAX];
win = elm_win_add(NULL, "toolbar5", ELM_WIN_BASIC); win = elm_win_add(NULL, "toolbar5", ELM_WIN_BASIC);
@ -564,15 +563,14 @@ test_toolbar5(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
menu = elm_toolbar_item_menu_get(item); menu = elm_toolbar_item_menu_get(item);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4); elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_item = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4); menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_item, "edit-paste", "is set to", tb_4, ph4); elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4); elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4);
elm_box_pack_end(bx, tb); elm_box_pack_end(bx, tb);
evas_object_show(tb); evas_object_show(tb);
tb = elm_table_add(win); tb = elm_table_add(win);
//elm_table_homogeneous_set(tb, 1);
evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(tb, 0.0, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);
@ -623,7 +621,7 @@ test_toolbar6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
Evas_Object *win, *bg, *bx, *tb, *ph, *menu; Evas_Object *win, *bg, *bx, *tb, *ph, *menu;
Evas_Object *ph1, *ph2, *ph3, *ph4; Evas_Object *ph1, *ph2, *ph3, *ph4;
Elm_Toolbar_Item *item; Elm_Toolbar_Item *item;
Elm_Menu_Item *menu_item; Elm_Object_Item *menu_it;
char buf[PATH_MAX]; char buf[PATH_MAX];
win = elm_win_add(NULL, "toolbar", ELM_WIN_BASIC); win = elm_win_add(NULL, "toolbar", ELM_WIN_BASIC);
@ -676,15 +674,14 @@ test_toolbar6(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_in
menu = elm_toolbar_item_menu_get(item); menu = elm_toolbar_item_menu_get(item);
elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4); elm_menu_item_add(menu, NULL, "edit-cut", "Shrink", tb_3, ph4);
menu_item = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4); menu_it = elm_menu_item_add(menu, NULL, "edit-copy", "Mode", tb_4, ph4);
elm_menu_item_add(menu, menu_item, "edit-paste", "is set to", tb_4, ph4); elm_menu_item_add(menu, menu_it, "edit-paste", "is set to", tb_4, ph4);
elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4); elm_menu_item_add(menu, NULL, "edit-delete", "Menu", tb_5, ph4);
elm_box_pack_end(bx, tb); elm_box_pack_end(bx, tb);
evas_object_show(tb); evas_object_show(tb);
tb = elm_table_add(win); tb = elm_table_add(win);
//elm_table_homogeneous_set(tb, 1);
evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); evas_object_size_hint_weight_set(tb, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_fill_set(tb, EVAS_HINT_FILL, EVAS_HINT_FILL);

View File

@ -10,9 +10,9 @@ static void
_del_it(void *data, Evas_Object *obj, void *event_info) _del_it(void *data, Evas_Object *obj, void *event_info)
{ {
Eina_List *l; Eina_List *l;
Elm_Menu_Item *it = elm_menu_first_item_get(data); Elm_Object_Item *menu_it = elm_menu_first_item_get(data);
it = elm_menu_item_next_get(it); menu_it = elm_menu_item_next_get(menu_it);
l = elm_menu_item_subitems_get(it); l = elm_menu_item_subitems_get(menu_it);
elm_menu_item_del(eina_list_data_get(l)); elm_menu_item_del(eina_list_data_get(l));
} }
@ -28,7 +28,7 @@ EAPI_MAIN int
elm_main(int argc, char **argv) elm_main(int argc, char **argv)
{ {
Evas_Object *win, *bg, *menu, *button, *rect; Evas_Object *win, *bg, *menu, *button, *rect;
Elm_Menu_Item *item; Elm_Object_Item *meu_it;
win = elm_win_add(NULL, "menu", ELM_WIN_BASIC); win = elm_win_add(NULL, "menu", ELM_WIN_BASIC);
elm_win_title_set(win, "Menu"); elm_win_title_set(win, "Menu");
@ -46,20 +46,20 @@ elm_main(int argc, char **argv)
menu = elm_menu_add(win); menu = elm_menu_add(win);
elm_menu_item_add(menu, NULL, NULL, "first item", NULL, NULL); elm_menu_item_add(menu, NULL, NULL, "first item", NULL, NULL);
item = elm_menu_item_add(menu, NULL, "mail-reply-all", "second item", NULL, NULL); menu_it = elm_menu_item_add(menu, NULL, "mail-reply-all", "second item", NULL, NULL);
elm_menu_item_add(menu, item, "object-rotate-left", "menu 1", NULL, NULL); elm_menu_item_add(menu, menu_it, "object-rotate-left", "menu 1", NULL, NULL);
button = elm_button_add(win); button = elm_button_add(win);
elm_object_text_set(button, "button - delete items"); elm_object_text_set(button, "button - delete items");
elm_menu_item_add_object(menu, item, button, NULL, NULL); elm_menu_item_add_object(menu, menu_it, button, NULL, NULL);
evas_object_smart_callback_add(button, "clicked", _del_it, menu); evas_object_smart_callback_add(button, "clicked", _del_it, menu);
elm_menu_item_separator_add(menu, item); elm_menu_item_separator_add(menu, menu_it);
elm_menu_item_add(menu, item, NULL, "third item", NULL, NULL); elm_menu_item_add(menu, menu_it, NULL, "third item", NULL, NULL);
elm_menu_item_add(menu, item, NULL, "fourth item", NULL, NULL); elm_menu_item_add(menu, menu_it, NULL, "fourth item", NULL, NULL);
elm_menu_item_add(menu, item, "window-new", "sub menu", NULL, NULL); elm_menu_item_add(menu, menu_it, "window-new", "sub menu", NULL, NULL);
item = elm_menu_item_add(menu, NULL, NULL, "third item", NULL, NULL); menu_it = elm_menu_item_add(menu, NULL, NULL, "third item", NULL, NULL);
elm_menu_item_disabled_set(item, EINA_TRUE); elm_menu_item_disabled_set(menu_it, EINA_TRUE);
evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _show, menu); evas_object_event_callback_add(rect, EVAS_CALLBACK_MOUSE_DOWN, _show, menu);
evas_object_show(menu); evas_object_show(menu);

View File

@ -15978,7 +15978,7 @@ extern "C" {
* @see @ref tutorial_menu * @see @ref tutorial_menu
* @{ * @{
*/ */
typedef struct _Elm_Menu_Item Elm_Menu_Item; /**< Item of Elm_Menu. Sub-type of Elm_Widget_Item */
/** /**
* @brief Add a new menu to the parent * @brief Add a new menu to the parent
* *
@ -16038,7 +16038,7 @@ extern "C" {
* *
* @warning Don't manipulate this object! * @warning Don't manipulate this object!
*/ */
EAPI Evas_Object *elm_menu_item_object_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1); EAPI Evas_Object *elm_menu_item_object_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Add an item at the end of the given menu widget * @brief Add an item at the end of the given menu widget
* *
@ -16050,7 +16050,7 @@ extern "C" {
* @param data Data sent by the callback. * @param data Data sent by the callback.
* @return Returns the new item. * @return Returns the new item.
*/ */
EAPI Elm_Menu_Item *elm_menu_item_add(Evas_Object *obj, Elm_Menu_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_menu_item_add(Evas_Object *obj, Elm_Object_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
/** /**
* @brief Add an object swallowed in an item at the end of the given menu * @brief Add an object swallowed in an item at the end of the given menu
* widget * widget
@ -16064,57 +16064,57 @@ extern "C" {
* *
* Add an evas object as an item to the menu. * Add an evas object as an item to the menu.
*/ */
EAPI Elm_Menu_Item *elm_menu_item_add_object(Evas_Object *obj, Elm_Menu_Item *parent, Evas_Object *subobj, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_menu_item_add_object(Evas_Object *obj, Elm_Object_Item *parent, Evas_Object *subobj, Evas_Smart_Cb func, const void *data) EINA_ARG_NONNULL(1);
/** /**
* @brief Set the label of a menu item * @brief Set the label of a menu item
* *
* @param item The menu item object. * @param it The menu item object.
* @param label The label to set for @p item * @param label The label to set for @p item
* *
* @warning Don't use this funcion on items created with * @warning Don't use this funcion on items created with
* elm_menu_item_add_object() or elm_menu_item_separator_add(). * elm_menu_item_add_object() or elm_menu_item_separator_add().
*/ */
EAPI void elm_menu_item_label_set(Elm_Menu_Item *item, const char *label) EINA_ARG_NONNULL(1); EAPI void elm_menu_item_label_set(Elm_Object_Item *it, const char *label) EINA_ARG_NONNULL(1);
/** /**
* @brief Get the label of a menu item * @brief Get the label of a menu item
* *
* @param item The menu item object. * @param it The menu item object.
* @return The label of @p item * @return The label of @p item
*/ */
EAPI const char *elm_menu_item_label_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1); EAPI const char *elm_menu_item_label_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Set the icon of a menu item to the standard icon with name @p icon * @brief Set the icon of a menu item to the standard icon with name @p icon
* *
* @param item The menu item object. * @param it The menu item object.
* @param icon The icon object to set for the content of @p item * @param icon The icon object to set for the content of @p item
* *
* Once this icon is set, any previously set icon will be deleted. * Once this icon is set, any previously set icon will be deleted.
*/ */
EAPI void elm_menu_item_object_icon_name_set(Elm_Menu_Item *item, const char *icon) EINA_ARG_NONNULL(1, 2); EAPI void elm_menu_item_object_icon_name_set(Elm_Object_Item *it, const char *icon) EINA_ARG_NONNULL(1, 2);
/** /**
* @brief Get the string representation from the icon of a menu item * @brief Get the string representation from the icon of a menu item
* *
* @param item The menu item object. * @param it The menu item object.
* @return The string representation of @p item's icon or NULL * @return The string representation of @p item's icon or NULL
* *
* @see elm_menu_item_object_icon_name_set() * @see elm_menu_item_object_icon_name_set()
*/ */
EAPI const char *elm_menu_item_object_icon_name_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1); EAPI const char *elm_menu_item_object_icon_name_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Set the content object of a menu item * @brief Set the content object of a menu item
* *
* @param item The menu item object * @param it The menu item object
* @param The content object or NULL * @param The content object or NULL
* @return EINA_TRUE on success, else EINA_FALSE * @return EINA_TRUE on success, else EINA_FALSE
* *
* Use this function to change the object swallowed by a menu item, deleting * Use this function to change the object swallowed by a menu item, deleting
* any previously swallowed object. * any previously swallowed object.
*/ */
EAPI Eina_Bool elm_menu_item_object_content_set(Elm_Menu_Item *item, Evas_Object *obj) EINA_ARG_NONNULL(1); EAPI Eina_Bool elm_menu_item_object_content_set(Elm_Object_Item *it, Evas_Object *obj) EINA_ARG_NONNULL(1);
/** /**
* @brief Get the content object of a menu item * @brief Get the content object of a menu item
* *
* @param item The menu item object * @param it The menu item object
* @return The content object or NULL * @return The content object or NULL
* @note If @p item was added with elm_menu_item_add_object, this * @note If @p item was added with elm_menu_item_add_object, this
* function will return the object passed, else it will return the * function will return the object passed, else it will return the
@ -16122,39 +16122,39 @@ extern "C" {
* *
* @see elm_menu_item_object_content_set() * @see elm_menu_item_object_content_set()
*/ */
EAPI Evas_Object *elm_menu_item_object_content_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1); EAPI Evas_Object *elm_menu_item_object_content_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Set the selected state of @p item. * @brief Set the selected state of @p item.
* *
* @param item The menu item object. * @param it The menu item object.
* @param selected The selected/unselected state of the item * @param selected The selected/unselected state of the item
*/ */
EAPI void elm_menu_item_selected_set(Elm_Menu_Item *item, Eina_Bool selected) EINA_ARG_NONNULL(1); EAPI void elm_menu_item_selected_set(Elm_Object_Item *it, Eina_Bool selected) EINA_ARG_NONNULL(1);
/** /**
* @brief Get the selected state of @p item. * @brief Get the selected state of @p item.
* *
* @param item The menu item object. * @param it The menu item object.
* @return The selected/unselected state of the item * @return The selected/unselected state of the item
* *
* @see elm_menu_item_selected_set() * @see elm_menu_item_selected_set()
*/ */
EAPI Eina_Bool elm_menu_item_selected_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1); EAPI Eina_Bool elm_menu_item_selected_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Set the disabled state of @p item. * @brief Set the disabled state of @p item.
* *
* @param item The menu item object. * @param it The menu item object.
* @param disabled The enabled/disabled state of the item * @param disabled The enabled/disabled state of the item
*/ */
EAPI void elm_menu_item_disabled_set(Elm_Menu_Item *item, Eina_Bool disabled) EINA_ARG_NONNULL(1); EAPI void elm_menu_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled) EINA_ARG_NONNULL(1);
/** /**
* @brief Get the disabled state of @p item. * @brief Get the disabled state of @p item.
* *
* @param item The menu item object. * @param it The menu item object.
* @return The enabled/disabled state of the item * @return The enabled/disabled state of the item
* *
* @see elm_menu_item_disabled_set() * @see elm_menu_item_disabled_set()
*/ */
EAPI Eina_Bool elm_menu_item_disabled_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1); EAPI Eina_Bool elm_menu_item_disabled_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Add a separator item to menu @p obj under @p parent. * @brief Add a separator item to menu @p obj under @p parent.
* *
@ -16164,63 +16164,64 @@ extern "C" {
* *
* This is item is a @ref Separator. * This is item is a @ref Separator.
*/ */
EAPI Elm_Menu_Item *elm_menu_item_separator_add(Evas_Object *obj, Elm_Menu_Item *parent) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent) EINA_ARG_NONNULL(1);
/** /**
* @brief Returns whether @p item is a separator. * @brief Returns whether @p item is a separator.
* *
* @param item The item to check * @param it The item to check
* @return If true, @p item is a separator * @return If true, @p item is a separator
* *
* @see elm_menu_item_separator_add() * @see elm_menu_item_separator_add()
*/ */
EAPI Eina_Bool elm_menu_item_is_separator(Elm_Menu_Item *item) EINA_ARG_NONNULL(1); EAPI Eina_Bool elm_menu_item_is_separator(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Deletes an item from the menu. * @brief Deletes an item from the menu.
* *
* @param item The item to delete. * @param it The item to delete.
* *
* @see elm_menu_item_add() * @see elm_menu_item_add()
*/ */
EAPI void elm_menu_item_del(Elm_Menu_Item *item) EINA_ARG_NONNULL(1); EAPI void elm_menu_item_del(Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Set the function called when a menu item is deleted. * @brief Set the function called when a menu item is deleted.
* *
* @param item The item to set the callback on * @param it The item to set the callback on
* @param func The function called * @param func The function called
* *
* @see elm_menu_item_add() * @see elm_menu_item_add()
* @see elm_menu_item_del() * @see elm_menu_item_del()
*/ */
EAPI void elm_menu_item_del_cb_set(Elm_Menu_Item *it, Evas_Smart_Cb func) EINA_ARG_NONNULL(1); EAPI void elm_menu_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func) EINA_ARG_NONNULL(1);
/** /**
* @brief Returns the data associated with menu item @p item. * @brief Returns the data associated with menu item @p item.
* *
* @param item The item * @param it The item
* @return The data associated with @p item or NULL if none was set. * @return The data associated with @p item or NULL if none was set.
* *
* This is the data set with elm_menu_add() or elm_menu_item_data_set(). * This is the data set with elm_menu_add() or elm_menu_item_data_set().
*/ */
EAPI void *elm_menu_item_data_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1); EAPI void *elm_menu_item_data_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Sets the data to be associated with menu item @p item. * @brief Sets the data to be associated with menu item @p item.
* *
* @param item The item * @param it The item
* @param data The data to be associated with @p item * @param data The data to be associated with @p item
*/ */
EAPI void elm_menu_item_data_set(Elm_Menu_Item *item, const void *data) EINA_ARG_NONNULL(1); EAPI void elm_menu_item_data_set(Elm_Object_Item *it, const void *data) EINA_ARG_NONNULL(1);
/** /**
* @brief Returns a list of @p item's subitems. * @brief Returns a list of @p item's subitems.
* *
* @param item The item * @param it The item
* @return An Eina_List* of @p item's subitems * @return An Eina_List* of @p item's subitems
* *
* @see elm_menu_add() * @see elm_menu_add()
*/ */
EAPI const Eina_List *elm_menu_item_subitems_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1); EAPI const Eina_List *elm_menu_item_subitems_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Get the position of a menu item * @brief Get the position of a menu item
* *
* @param item The menu item * @param it The menu item
* @return The item's index * @return The item's index
* *
* This function returns the index position of a menu item in a menu. * This function returns the index position of a menu item in a menu.
@ -16228,16 +16229,16 @@ extern "C" {
* *
* @note Index values begin with 0 * @note Index values begin with 0
*/ */
EAPI unsigned int elm_menu_item_index_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1) EINA_PURE; EAPI unsigned int elm_menu_item_index_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1) EINA_PURE;
/** /**
* @brief @brief Return a menu item's owner menu * @brief @brief Return a menu item's owner menu
* *
* @param item The menu item * @param it The menu item
* @return The menu object owning @p item, or NULL on failure * @return The menu object owning @p item, or NULL on failure
* *
* Use this function to get the menu object owning an item. * Use this function to get the menu object owning an item.
*/ */
EAPI Evas_Object *elm_menu_item_menu_get(const Elm_Menu_Item *item) EINA_ARG_NONNULL(1) EINA_PURE; EAPI Evas_Object *elm_menu_item_menu_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1) EINA_PURE;
/** /**
* @brief Get the selected item in the menu * @brief Get the selected item in the menu
* *
@ -16247,35 +16248,35 @@ extern "C" {
* @see elm_menu_item_selected_get() * @see elm_menu_item_selected_get()
* @see elm_menu_item_selected_set() * @see elm_menu_item_selected_set()
*/ */
EAPI Elm_Menu_Item *elm_menu_selected_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_menu_selected_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
/** /**
* @brief Get the last item in the menu * @brief Get the last item in the menu
* *
* @param obj The menu object * @param obj The menu object
* @return The last item, or NULL if none * @return The last item, or NULL if none
*/ */
EAPI Elm_Menu_Item *elm_menu_last_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_menu_last_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
/** /**
* @brief Get the first item in the menu * @brief Get the first item in the menu
* *
* @param obj The menu object * @param obj The menu object
* @return The first item, or NULL if none * @return The first item, or NULL if none
*/ */
EAPI Elm_Menu_Item *elm_menu_first_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_menu_first_item_get(const Evas_Object * obj) EINA_ARG_NONNULL(1);
/** /**
* @brief Get the next item in the menu. * @brief Get the next item in the menu.
* *
* @param item The menu item object. * @param it The menu item object.
* @return The item after it, or NULL if none * @return The item after it, or NULL if none
*/ */
EAPI Elm_Menu_Item *elm_menu_item_next_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_menu_item_next_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @brief Get the previous item in the menu. * @brief Get the previous item in the menu.
* *
* @param item The menu item object. * @param it The menu item object.
* @return The item before it, or NULL if none * @return The item before it, or NULL if none
*/ */
EAPI Elm_Menu_Item *elm_menu_item_prev_get(const Elm_Menu_Item *it) EINA_ARG_NONNULL(1); EAPI Elm_Object_Item *elm_menu_item_prev_get(const Elm_Object_Item *it) EINA_ARG_NONNULL(1);
/** /**
* @} * @}
*/ */

View File

@ -2,6 +2,7 @@
#include "elm_priv.h" #include "elm_priv.h"
typedef struct _Widget_Data Widget_Data; typedef struct _Widget_Data Widget_Data;
typedef struct _Elm_Menu_Item Elm_Menu_Item;
struct _Elm_Menu_Item struct _Elm_Menu_Item
{ {
@ -116,15 +117,19 @@ _theme_hook(Evas_Object *obj)
_elm_theme_object_set _elm_theme_object_set
(obj, VIEW(item), "menu", "item_with_submenu", (obj, VIEW(item), "menu", "item_with_submenu",
elm_widget_style_get(obj)); elm_widget_style_get(obj));
elm_menu_item_label_set(item, item->label); elm_menu_item_label_set((Elm_Object_Item *) item,
elm_menu_item_object_icon_name_set(item, item->icon_str); item->label);
elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
item->icon_str);
} }
else else
{ {
_elm_theme_object_set(obj, VIEW(item), "menu", "item", _elm_theme_object_set(obj, VIEW(item), "menu", "item",
elm_widget_style_get(obj)); elm_widget_style_get(obj));
elm_menu_item_label_set(item, item->label); elm_menu_item_label_set((Elm_Object_Item *) item,
elm_menu_item_object_icon_name_set(item, item->icon_str); item->label);
elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
item->icon_str);
} }
if (item->disabled) if (item->disabled)
edje_object_signal_emit edje_object_signal_emit
@ -328,7 +333,8 @@ _menu_item_activate(void *data, Evas_Object *obj __UNUSED__, const char *emissio
{ {
EINA_LIST_FOREACH(item->parent->submenu.items, l, item2) EINA_LIST_FOREACH(item->parent->submenu.items, l, item2)
{ {
if (item2 != item) elm_menu_item_selected_set(item2, 0); if (item2 != item)
elm_menu_item_selected_set((Elm_Object_Item *) item2, 0);
} }
} }
else else
@ -336,7 +342,8 @@ _menu_item_activate(void *data, Evas_Object *obj __UNUSED__, const char *emissio
Widget_Data *wd = elm_widget_data_get(WIDGET(item)); Widget_Data *wd = elm_widget_data_get(WIDGET(item));
EINA_LIST_FOREACH(wd->items, l, item2) EINA_LIST_FOREACH(wd->items, l, item2)
{ {
if (item2 != item) elm_menu_item_selected_set(item2, 0); if (item2 != item)
elm_menu_item_selected_set((Elm_Object_Item *) item2, 0);
} }
} }
} }
@ -419,9 +426,11 @@ _item_submenu_obj_create(Elm_Menu_Item *item)
edje_object_mirrored_set(VIEW(item), elm_widget_mirrored_get(WIDGET(item))); edje_object_mirrored_set(VIEW(item), elm_widget_mirrored_get(WIDGET(item)));
_elm_theme_object_set(WIDGET(item), VIEW(item), "menu", "item_with_submenu", elm_widget_style_get(WIDGET(item))); _elm_theme_object_set(WIDGET(item), VIEW(item), "menu", "item_with_submenu", elm_widget_style_get(WIDGET(item)));
elm_menu_item_label_set(item, item->label); elm_menu_item_label_set((Elm_Object_Item *) item,
if (item->icon_str) elm_menu_item_object_icon_name_set(item, item->icon_str); item->label);
if (item->icon_str)
elm_menu_item_object_icon_name_set((Elm_Object_Item *) item,
item->icon_str);
edje_object_signal_callback_add(VIEW(item), "elm,action,open", "", edje_object_signal_callback_add(VIEW(item), "elm,action,open", "",
_submenu_open, item); _submenu_open, item);
evas_object_event_callback_add(VIEW(item), EVAS_CALLBACK_MOVE, _item_move_resize, item); evas_object_event_callback_add(VIEW(item), EVAS_CALLBACK_MOVE, _item_move_resize, item);
@ -545,30 +554,36 @@ elm_menu_close(Evas_Object *obj)
} }
EAPI Evas_Object * EAPI Evas_Object *
elm_menu_item_object_get(const Elm_Menu_Item *item) elm_menu_item_object_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, NULL); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
return VIEW(item); return VIEW(((Elm_Menu_Item *) it));
} }
static void static void
_item_clone(Evas_Object *obj, Elm_Menu_Item *parent, Elm_Menu_Item *item) _item_clone(Evas_Object *obj, Elm_Menu_Item *parent, Elm_Menu_Item *item)
{ {
Elm_Menu_Item *new_item, *subitem; Elm_Object_Item *new_item;
Elm_Menu_Item *subitem;
Eina_List *iter; Eina_List *iter;
if (item->separator) if (item->separator)
new_item = elm_menu_item_separator_add(obj, parent); new_item = elm_menu_item_separator_add(obj, (Elm_Object_Item *) parent);
else else
new_item = elm_menu_item_add(obj, parent, item->icon_str, item->label, item->func, item->base.data); new_item = elm_menu_item_add(obj,
(Elm_Object_Item *) parent,
item->icon_str,
item->label,
item->func,
item->base.data);
elm_menu_item_disabled_set(new_item, item->disabled); elm_menu_item_disabled_set(new_item, item->disabled);
EINA_LIST_FOREACH(item->submenu.items, iter, subitem) EINA_LIST_FOREACH(item->submenu.items, iter, subitem)
_item_clone(obj, new_item, subitem); _item_clone(obj, (Elm_Menu_Item *) new_item, subitem);
} }
void void
elm_menu_clone(Evas_Object *from_menu, Evas_Object *to_menu, Elm_Menu_Item *parent) elm_menu_clone(Evas_Object *from_menu, Evas_Object *to_menu, Elm_Object_Item *parent)
{ {
ELM_CHECK_WIDTYPE(from_menu, widtype); ELM_CHECK_WIDTYPE(from_menu, widtype);
ELM_CHECK_WIDTYPE(to_menu, widtype); ELM_CHECK_WIDTYPE(to_menu, widtype);
@ -578,7 +593,7 @@ elm_menu_clone(Evas_Object *from_menu, Evas_Object *to_menu, Elm_Menu_Item *pare
if (!from_wd) return; if (!from_wd) return;
EINA_LIST_FOREACH(from_wd->items, iter, item) EINA_LIST_FOREACH(from_wd->items, iter, item)
_item_clone(to_menu, parent, item); _item_clone(to_menu, (Elm_Menu_Item *) parent, item);
} }
static void static void
@ -601,8 +616,8 @@ _elm_menu_item_add_helper(Evas_Object *obj, Elm_Menu_Item *parent, Elm_Menu_Item
_sizing_eval(obj); _sizing_eval(obj);
} }
EAPI Elm_Menu_Item * EAPI Elm_Object_Item *
elm_menu_item_add(Evas_Object *obj, Elm_Menu_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data) elm_menu_item_add(Evas_Object *obj, Elm_Object_Item *parent, const char *icon, const char *label, Evas_Smart_Cb func, const void *data)
{ {
Elm_Menu_Item *subitem; Elm_Menu_Item *subitem;
ELM_CHECK_WIDTYPE(obj, widtype) NULL; ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@ -620,23 +635,24 @@ elm_menu_item_add(Evas_Object *obj, Elm_Menu_Item *parent, const char *icon, con
} }
subitem->base.data = data; subitem->base.data = data;
subitem->func = func; subitem->func = func;
subitem->parent = parent; subitem->parent = (Elm_Menu_Item *) parent;
subitem->content = icon_obj; subitem->content = icon_obj;
_item_obj_create(subitem); _item_obj_create(subitem);
elm_menu_item_label_set(subitem, label); elm_menu_item_label_set((Elm_Object_Item *) subitem, label);
elm_widget_sub_object_add(WIDGET(subitem), subitem->content); elm_widget_sub_object_add(WIDGET(subitem), subitem->content);
edje_object_part_swallow(VIEW(subitem), "elm.swallow.content", subitem->content); edje_object_part_swallow(VIEW(subitem), "elm.swallow.content", subitem->content);
if (icon) elm_menu_item_object_icon_name_set(subitem, icon); if (icon)
elm_menu_item_object_icon_name_set((Elm_Object_Item *) subitem, icon);
_elm_menu_item_add_helper(obj, parent, subitem, wd); _elm_menu_item_add_helper(obj, (Elm_Menu_Item *) parent, subitem, wd);
return subitem; return (Elm_Object_Item *) subitem;
} }
EAPI Elm_Menu_Item * EAPI Elm_Object_Item *
elm_menu_item_add_object(Evas_Object *obj, Elm_Menu_Item *parent, Evas_Object *subobj, Evas_Smart_Cb func, const void *data) elm_menu_item_add_object(Evas_Object *obj, Elm_Object_Item *parent, Evas_Object *subobj, Evas_Smart_Cb func, const void *data)
{ {
Elm_Menu_Item *subitem; Elm_Menu_Item *subitem;
ELM_CHECK_WIDTYPE(obj, widtype) NULL; ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@ -648,7 +664,7 @@ elm_menu_item_add_object(Evas_Object *obj, Elm_Menu_Item *parent, Evas_Object *s
subitem->base.data = data; subitem->base.data = data;
subitem->func = func; subitem->func = func;
subitem->parent = parent; subitem->parent = (Elm_Menu_Item *) parent;
subitem->object_item = EINA_TRUE; subitem->object_item = EINA_TRUE;
subitem->content = subobj; subitem->content = subobj;
@ -658,22 +674,24 @@ elm_menu_item_add_object(Evas_Object *obj, Elm_Menu_Item *parent, Evas_Object *s
edje_object_part_swallow(VIEW(subitem), "elm.swallow.content", subobj); edje_object_part_swallow(VIEW(subitem), "elm.swallow.content", subobj);
_sizing_eval(WIDGET(subitem)); _sizing_eval(WIDGET(subitem));
_elm_menu_item_add_helper(obj, parent, subitem, wd); _elm_menu_item_add_helper(obj, (Elm_Menu_Item *) parent, subitem, wd);
return subitem; return (Elm_Object_Item *) subitem;
} }
EAPI unsigned int EAPI unsigned int
elm_menu_item_index_get(const Elm_Menu_Item *item) elm_menu_item_index_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, 0); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, 0);
return item->idx; return ((Elm_Menu_Item *) it)->idx;
} }
EAPI void EAPI void
elm_menu_item_label_set(Elm_Menu_Item *item, const char *label) elm_menu_item_label_set(Elm_Object_Item *it, const char *label)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item); ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
eina_stringshare_replace(&item->label, label); eina_stringshare_replace(&item->label, label);
if (label) if (label)
@ -687,18 +705,20 @@ elm_menu_item_label_set(Elm_Menu_Item *item, const char *label)
} }
EAPI const char * EAPI const char *
elm_menu_item_label_get(const Elm_Menu_Item *item) elm_menu_item_label_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, NULL); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
return item->label; return ((Elm_Menu_Item *) it)->label;
} }
EAPI void EAPI void
elm_menu_item_object_icon_name_set(Elm_Menu_Item *item, const char *icon) elm_menu_item_object_icon_name_set(Elm_Object_Item *it, const char *icon)
{ {
char icon_tmp[512]; ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item);
EINA_SAFETY_ON_NULL_RETURN(icon); EINA_SAFETY_ON_NULL_RETURN(icon);
char icon_tmp[512];
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
if (!*icon) return; if (!*icon) return;
if ((item->icon_str) && (!strcmp(item->icon_str, icon))) return; if ((item->icon_str) && (!strcmp(item->icon_str, icon))) return;
if ((snprintf(icon_tmp, sizeof(icon_tmp), "menu/%s", icon) > 0) && if ((snprintf(icon_tmp, sizeof(icon_tmp), "menu/%s", icon) > 0) &&
@ -715,9 +735,11 @@ elm_menu_item_object_icon_name_set(Elm_Menu_Item *item, const char *icon)
} }
EAPI void EAPI void
elm_menu_item_disabled_set(Elm_Menu_Item *item, Eina_Bool disabled) elm_menu_item_disabled_set(Elm_Object_Item *it, Eina_Bool disabled)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item); ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
if (disabled == item->disabled) return; if (disabled == item->disabled) return;
item->disabled = !!disabled; item->disabled = !!disabled;
if (disabled) if (disabled)
@ -731,23 +753,24 @@ elm_menu_item_disabled_set(Elm_Menu_Item *item, Eina_Bool disabled)
} }
EAPI Eina_Bool EAPI Eina_Bool
elm_menu_item_disabled_get(const Elm_Menu_Item *item) elm_menu_item_disabled_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, EINA_FALSE); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
return item->disabled; return ((Elm_Menu_Item *) it)->disabled;
} }
EAPI Elm_Menu_Item * EAPI Elm_Object_Item *
elm_menu_item_separator_add(Evas_Object *obj, Elm_Menu_Item *parent) elm_menu_item_separator_add(Evas_Object *obj, Elm_Object_Item *parent)
{ {
Elm_Menu_Item *subitem;
ELM_CHECK_WIDTYPE(obj, widtype) NULL; ELM_CHECK_WIDTYPE(obj, widtype) NULL;
Elm_Menu_Item *subitem;
Widget_Data *wd = elm_widget_data_get(obj); Widget_Data *wd = elm_widget_data_get(obj);
Elm_Menu_Item *p_item = (Elm_Menu_Item *) parent;
if (!wd) return NULL; if (!wd) return NULL;
/* don't add a separator as the first item */ /* don't add a separator as the first item */
if (!wd->items) return NULL; if (!wd->items) return NULL;
/* don't allow adding more than one separator in a row */ /* don't allow adding more than one separator in a row */
if (parent) subitem = eina_list_last(parent->submenu.items)->data; if (p_item) subitem = eina_list_last(p_item->submenu.items)->data;
else subitem = eina_list_last(wd->items)->data; else subitem = eina_list_last(wd->items)->data;
if (subitem->separator) return NULL; if (subitem->separator) return NULL;
@ -756,25 +779,28 @@ elm_menu_item_separator_add(Evas_Object *obj, Elm_Menu_Item *parent)
WIDGET(subitem) = obj; WIDGET(subitem) = obj;
subitem->separator = 1; subitem->separator = 1;
_item_separator_obj_create(subitem); _item_separator_obj_create(subitem);
if (!parent) if (!p_item)
{ {
elm_box_pack_end(wd->bx, VIEW(subitem)); elm_box_pack_end(wd->bx, VIEW(subitem));
wd->items = eina_list_append(wd->items, subitem); wd->items = eina_list_append(wd->items, subitem);
} }
else else
{ {
if (!parent->submenu.bx) _item_submenu_obj_create(parent); if (!p_item->submenu.bx) _item_submenu_obj_create(p_item);
elm_box_pack_end(parent->submenu.bx, VIEW(subitem)); elm_box_pack_end(p_item->submenu.bx, VIEW(subitem));
parent->submenu.items = eina_list_append(parent->submenu.items, subitem); p_item->submenu.items = eina_list_append(p_item->submenu.items,
subitem);
} }
_sizing_eval(obj); _sizing_eval(obj);
return subitem; return (Elm_Object_Item *) subitem;
} }
EAPI Eina_Bool EAPI Eina_Bool
elm_menu_item_object_content_set(Elm_Menu_Item *item, Evas_Object *obj) elm_menu_item_object_content_set(Elm_Object_Item *it, Evas_Object *obj)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, EINA_FALSE); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
if (item->content) if (item->content)
{ {
elm_widget_sub_object_del(WIDGET(item), item->content); elm_widget_sub_object_del(WIDGET(item), item->content);
@ -790,31 +816,32 @@ elm_menu_item_object_content_set(Elm_Menu_Item *item, Evas_Object *obj)
} }
EAPI Evas_Object * EAPI Evas_Object *
elm_menu_item_object_content_get(const Elm_Menu_Item *item) elm_menu_item_object_content_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, NULL); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
return item->content; return ((Elm_Menu_Item *) it)->content;
} }
EAPI const char * EAPI const char *
elm_menu_item_object_icon_name_get(const Elm_Menu_Item *item) elm_menu_item_object_icon_name_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, NULL); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
return item->icon_str; return ((Elm_Menu_Item *) it)->icon_str;
} }
EAPI Eina_Bool EAPI Eina_Bool
elm_menu_item_is_separator(Elm_Menu_Item *item) elm_menu_item_is_separator(Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, EINA_FALSE); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
return item->separator; return ((Elm_Menu_Item *) it)->separator;
} }
EAPI void EAPI void
elm_menu_item_del(Elm_Menu_Item *item) elm_menu_item_del(Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item); ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Elm_Menu_Item *_item; Elm_Menu_Item *item = (Elm_Menu_Item *) it;
Elm_Object_Item *_item;
elm_widget_item_pre_notify_del(item); elm_widget_item_pre_notify_del(item);
@ -836,31 +863,29 @@ elm_menu_item_del(Elm_Menu_Item *item)
} }
EAPI void EAPI void
elm_menu_item_del_cb_set(Elm_Menu_Item *item, Evas_Smart_Cb func) elm_menu_item_del_cb_set(Elm_Object_Item *it, Evas_Smart_Cb func)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item); ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
elm_widget_item_del_cb_set(item, func); elm_widget_item_del_cb_set(it, func);
} }
EAPI void * EAPI void *
elm_menu_item_data_get(const Elm_Menu_Item *item) elm_menu_item_data_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, NULL); return elm_object_item_data_get(it);
return elm_widget_item_data_get(item);
} }
EAPI void EAPI void
elm_menu_item_data_set(Elm_Menu_Item *item, const void *data) elm_menu_item_data_set(Elm_Object_Item *it, const void *data)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item); elm_object_item_data_set(it, (void *) data);
elm_widget_item_data_set(item, data);
} }
EAPI const Eina_List * EAPI const Eina_List *
elm_menu_item_subitems_get(const Elm_Menu_Item *item) elm_menu_item_subitems_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, NULL); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
return item->submenu.items; return ((Elm_Menu_Item *) it)->submenu.items;
} }
EAPI const Eina_List * EAPI const Eina_List *
@ -872,9 +897,11 @@ elm_menu_items_get(const Evas_Object * obj)
} }
EAPI void EAPI void
elm_menu_item_selected_set(Elm_Menu_Item *item, Eina_Bool selected) elm_menu_item_selected_set(Elm_Object_Item *it, Eina_Bool selected)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item); ELM_OBJ_ITEM_CHECK_OR_RETURN(it);
Elm_Menu_Item *item = (Elm_Menu_Item *) it;
if (selected == item->selected) return; if (selected == item->selected) return;
item->selected = selected; item->selected = selected;
if (selected) if (selected)
@ -891,28 +918,31 @@ elm_menu_item_selected_set(Elm_Menu_Item *item, Eina_Bool selected)
} }
EAPI Eina_Bool EAPI Eina_Bool
elm_menu_item_selected_get(const Elm_Menu_Item *item) elm_menu_item_selected_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, EINA_FALSE); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, EINA_FALSE);
return item->selected; return ((Elm_Menu_Item *) it)->selected;
} }
EAPI Elm_Menu_Item * EAPI Elm_Object_Item *
elm_menu_item_prev_get(const Elm_Menu_Item *it) elm_menu_item_prev_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, NULL); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
if (it->parent) Elm_Menu_Item *item = (Elm_Menu_Item *) it;
if (item->parent)
{ {
Eina_List *l = eina_list_data_find_list(it->parent->submenu.items, it); Eina_List *l = eina_list_data_find_list(item->parent->submenu.items,
item);
l = eina_list_prev(l); l = eina_list_prev(l);
if (!l) return NULL; if (!l) return NULL;
return l->data; return l->data;
} }
else else
{ {
Widget_Data *wd = elm_widget_data_get(WIDGET(it)); Widget_Data *wd = elm_widget_data_get(WIDGET(item));
if (!wd || !wd->items) return NULL; if (!wd || !wd->items) return NULL;
Eina_List *l = eina_list_data_find_list(wd->items, it); Eina_List *l = eina_list_data_find_list(wd->items, item);
l = eina_list_prev(l); l = eina_list_prev(l);
if (!l) return NULL; if (!l) return NULL;
return l->data; return l->data;
@ -920,22 +950,25 @@ elm_menu_item_prev_get(const Elm_Menu_Item *it)
return NULL; return NULL;
} }
EAPI Elm_Menu_Item * EAPI Elm_Object_Item *
elm_menu_item_next_get(const Elm_Menu_Item *it) elm_menu_item_next_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(it, NULL); ELM_OBJ_ITEM_CHECK_OR_RETURN(it, NULL);
if (it->parent) Elm_Menu_Item *item = (Elm_Menu_Item *) it;
if (item->parent)
{ {
Eina_List *l = eina_list_data_find_list(it->parent->submenu.items, it); Eina_List *l = eina_list_data_find_list(item->parent->submenu.items,
item);
l = eina_list_next(l); l = eina_list_next(l);
if (!l) return NULL; if (!l) return NULL;
return l->data; return l->data;
} }
else else
{ {
Widget_Data *wd = elm_widget_data_get(WIDGET(it)); Widget_Data *wd = elm_widget_data_get(WIDGET(item));
if (!wd || !wd->items) return NULL; if (!wd || !wd->items) return NULL;
Eina_List *l = eina_list_data_find_list(wd->items, it); Eina_List *l = eina_list_data_find_list(wd->items, item);
l = eina_list_next(l); l = eina_list_next(l);
if (!l) return NULL; if (!l) return NULL;
return l->data; return l->data;
@ -944,13 +977,12 @@ elm_menu_item_next_get(const Elm_Menu_Item *it)
} }
EAPI Evas_Object * EAPI Evas_Object *
elm_menu_item_menu_get(const Elm_Menu_Item *item) elm_menu_item_menu_get(const Elm_Object_Item *it)
{ {
ELM_WIDGET_ITEM_WIDTYPE_CHECK_OR_RETURN(item, NULL); return elm_object_item_object_get(it);
return WIDGET(item);
} }
EAPI Elm_Menu_Item * EAPI Elm_Object_Item *
elm_menu_first_item_get(const Evas_Object * obj) elm_menu_first_item_get(const Evas_Object * obj)
{ {
ELM_CHECK_WIDTYPE(obj, widtype) NULL; ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@ -960,7 +992,7 @@ elm_menu_first_item_get(const Evas_Object * obj)
return NULL; return NULL;
} }
EAPI Elm_Menu_Item * EAPI Elm_Object_Item *
elm_menu_last_item_get(const Evas_Object * obj) elm_menu_last_item_get(const Evas_Object * obj)
{ {
ELM_CHECK_WIDTYPE(obj, widtype) NULL; ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@ -971,7 +1003,7 @@ elm_menu_last_item_get(const Evas_Object * obj)
return NULL; return NULL;
} }
EAPI Elm_Menu_Item * EAPI Elm_Object_Item *
elm_menu_selected_item_get(const Evas_Object * obj) elm_menu_selected_item_get(const Evas_Object * obj)
{ {
ELM_CHECK_WIDTYPE(obj, widtype) NULL; ELM_CHECK_WIDTYPE(obj, widtype) NULL;
@ -981,7 +1013,7 @@ elm_menu_selected_item_get(const Evas_Object * obj)
Elm_Menu_Item *item; Elm_Menu_Item *item;
EINA_LIST_FOREACH(wd->items, l, item) EINA_LIST_FOREACH(wd->items, l, item)
{ {
if (item->selected) return item; if (item->selected) return ((Elm_Object_Item *) item);
} }
return NULL; return NULL;
} }

View File

@ -246,7 +246,7 @@ void elm_object_sub_tooltip_content_cb_set(Evas_Object *eventare
void elm_cursor_theme(Elm_Cursor *cur); void elm_cursor_theme(Elm_Cursor *cur);
void elm_object_sub_cursor_set(Evas_Object *eventarea, Evas_Object *owner, const char *cursor); void elm_object_sub_cursor_set(Evas_Object *eventarea, Evas_Object *owner, const char *cursor);
void elm_menu_clone(Evas_Object *from_menu, Evas_Object *to_menu, Elm_Menu_Item *parent); void elm_menu_clone(Evas_Object *from_menu, Evas_Object *to_menu, Elm_Object_Item *parent);
Eina_Bool _elm_dangerous_call_check(const char *call); Eina_Bool _elm_dangerous_call_check(const char *call);

View File

@ -533,11 +533,13 @@ _resize_job(void *data)
elm_menu_item_separator_add(menu, NULL); elm_menu_item_separator_add(menu, NULL);
else else
{ {
Elm_Menu_Item *item; Elm_Object_Item *menu_it;
item = elm_menu_item_add(menu, NULL, it->icon_str, it->label, menu_it = elm_menu_item_add(menu, NULL,
_elm_toolbar_item_menu_cb, it); it->icon_str, it->label,
elm_menu_item_disabled_set(item, it->disabled); _elm_toolbar_item_menu_cb, it);
if (it->o_menu) elm_menu_clone(it->o_menu, menu, item); elm_menu_item_disabled_set(menu_it, it->disabled);
if (it->o_menu)
elm_menu_clone(it->o_menu, menu, menu_it);
} }
evas_object_hide(VIEW(it)); evas_object_hide(VIEW(it));
} }