forked from enlightenment/enlightenment
adding/deleting submenu item after menu item exists now properly updates the realized item
this should fix misleading items in the Files menu SVN revision: 74828
This commit is contained in:
parent
3c72625d34
commit
652422bce6
|
@ -742,13 +742,51 @@ e_menu_item_label_set(E_Menu_Item *mi, const char *label)
|
||||||
EAPI void
|
EAPI void
|
||||||
e_menu_item_submenu_set(E_Menu_Item *mi, E_Menu *sub)
|
e_menu_item_submenu_set(E_Menu_Item *mi, E_Menu *sub)
|
||||||
{
|
{
|
||||||
|
Eina_Bool submenu = EINA_FALSE;
|
||||||
|
Evas_Object *o;
|
||||||
|
int ww, hh;
|
||||||
E_OBJECT_CHECK(mi);
|
E_OBJECT_CHECK(mi);
|
||||||
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
|
E_OBJECT_TYPE_CHECK(mi, E_MENU_ITEM_TYPE);
|
||||||
|
submenu = !!mi->submenu;
|
||||||
if (mi->submenu) e_object_unref(E_OBJECT(mi->submenu));
|
if (mi->submenu) e_object_unref(E_OBJECT(mi->submenu));
|
||||||
if (sub) e_object_ref(E_OBJECT(sub));
|
if (sub) e_object_ref(E_OBJECT(sub));
|
||||||
mi->submenu = sub;
|
mi->submenu = sub;
|
||||||
mi->changed = 1;
|
mi->changed = 1;
|
||||||
mi->menu->changed = 1;
|
mi->menu->changed = 1;
|
||||||
|
if (!!sub == submenu) return;
|
||||||
|
if (!mi->bg_object) return;
|
||||||
|
if ((mi->submenu) || (mi->submenu_pre_cb.func))
|
||||||
|
{
|
||||||
|
if (mi->submenu_object) evas_object_del(mi->submenu_object);
|
||||||
|
o = edje_object_add(mi->menu->evas);
|
||||||
|
mi->submenu_object = o;
|
||||||
|
e_theme_edje_object_set(o, "base/theme/menus",
|
||||||
|
"e/widgets/menu/default/submenu");
|
||||||
|
evas_object_pass_events_set(o, 1);
|
||||||
|
evas_object_show(o);
|
||||||
|
e_box_pack_end(mi->container_object, o);
|
||||||
|
edje_object_size_min_calc(mi->submenu_object, &ww, &hh);
|
||||||
|
mi->submenu_w = ww;
|
||||||
|
mi->submenu_h = hh;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (mi->submenu_object) evas_object_del(mi->submenu_object);
|
||||||
|
o = evas_object_rectangle_add(mi->menu->evas);
|
||||||
|
mi->submenu_object = o;
|
||||||
|
evas_object_color_set(o, 0, 0, 0, 0);
|
||||||
|
evas_object_pass_events_set(o, 1);
|
||||||
|
e_box_pack_end(mi->container_object, o);
|
||||||
|
}
|
||||||
|
if ((mi->submenu) || (mi->submenu_pre_cb.func))
|
||||||
|
{
|
||||||
|
if (e_theme_edje_object_set(mi->bg_object, "base/theme/menus",
|
||||||
|
"e/widgets/menu/default/submenu_bg"))
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
e_theme_edje_object_set(mi->bg_object, "base/theme/menus",
|
||||||
|
"e/widgets/menu/default/item_bg");
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
|
|
Loading…
Reference in New Issue