From 0cb7e8e3f35bde105880bff6f05dc2b7f4ac3e5a Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 2 Nov 2012 11:56:32 +0000 Subject: [PATCH] finally fix annoying submenu offset bug ticket #1691 SVN revision: 78854 --- src/bin/e_menu.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/bin/e_menu.c b/src/bin/e_menu.c index f77904675..ae763b63e 100644 --- a/src/bin/e_menu.c +++ b/src/bin/e_menu.c @@ -763,7 +763,17 @@ e_menu_item_submenu_set(E_Menu_Item *mi, E_Menu *sub) _e_menu_lock = EINA_TRUE; if ((mi->submenu) || (mi->submenu_pre_cb.func)) { - if (mi->submenu_object) evas_object_del(mi->submenu_object); + if (mi->submenu_object) + { + if (!e_util_strcmp(evas_object_type_get(mi->submenu_object), "edje")) + { + /* already have a correct submenu object, don't re-set it */ + _e_menu_lock = EINA_FALSE; + if (sub) e_object_unref(E_OBJECT(sub)); + return; + } + evas_object_del(mi->submenu_object); + } o = edje_object_add(mi->menu->evas); if (sub && (mi->submenu != sub)) e_object_ref(E_OBJECT(sub)); mi->submenu = sub; @@ -776,6 +786,16 @@ e_menu_item_submenu_set(E_Menu_Item *mi, E_Menu *sub) edje_object_size_min_calc(mi->submenu_object, &ww, &hh); mi->submenu_w = ww; mi->submenu_h = hh; + edje_object_part_swallow(mi->bg_object, "e.swallow.content", + mi->container_object); + edje_object_size_min_calc(mi->bg_object, &ww, &hh); + e_box_pack_options_set(mi->bg_object, + 1, 1, /* fill */ + 1, 0, /* expand */ + 0.5, 0.5, /* align */ + ww, hh, /* min */ + -1, -1 /* max */ + ); } else {