From 0c1f13b9c3d5d3c2c351553778f78c4f6d9f380e Mon Sep 17 00:00:00 2001 From: Viktor Kojouharov Date: Sun, 24 May 2009 10:02:56 +0000 Subject: [PATCH] do full size calc when the content is set, not when it is shown SVN revision: 40813 --- src/bin/e_gadcon_popup.c | 31 ++++++++----------------------- 1 file changed, 8 insertions(+), 23 deletions(-) diff --git a/src/bin/e_gadcon_popup.c b/src/bin/e_gadcon_popup.c index fdb74570a..0a35970db 100644 --- a/src/bin/e_gadcon_popup.c +++ b/src/bin/e_gadcon_popup.c @@ -54,7 +54,13 @@ e_gadcon_popup_content_set(E_Gadcon_Popup *pop, Evas_Object *o) evas_object_del(old_o); } e_widget_min_size_get(o, &w, &h); - if ((!w) || (!h)) edje_object_size_min_calc(o, &w, &h); + if ((!w) || (!h)) evas_object_size_hint_min_get(o, &w, &h); + if ((!w) || (!h)) + { + edje_object_size_min_get(o, &w, &h); + edje_object_size_min_restricted_calc(o, &w, &h, w, h); + } + if (pop->resize_func) pop->resize_func(o, &w, &h); edje_extern_object_min_size_set(o, w, h); edje_object_part_swallow(pop->o_bg, "e.swallow.content", o); edje_object_size_min_calc(pop->o_bg, &pop->w, &pop->h); @@ -64,9 +70,8 @@ e_gadcon_popup_content_set(E_Gadcon_Popup *pop, Evas_Object *o) EAPI void e_gadcon_popup_show(E_Gadcon_Popup *pop) { - Evas_Object *o; Evas_Coord gx, gy, gw, gh, zw, zh, zx, zy; - Evas_Coord px, py, ww, wh; + Evas_Coord px, py; if (!pop) return; E_OBJECT_CHECK(pop); @@ -74,28 +79,8 @@ e_gadcon_popup_show(E_Gadcon_Popup *pop) if (pop->win->visible) return; - if ((o = edje_object_part_swallow_get(pop->o_bg, "e.swallow.content"))) - { - Evas_Coord w = 0, h = 0; - - e_widget_min_size_get(o, &w, &h); - if ((!w) || (!h)) - { - edje_object_size_min_get(o, &w, &h); - edje_object_size_min_restricted_calc(o, &w, &h, w, h); - } - if (pop->resize_func) pop->resize_func(o, &w, &h); - edje_extern_object_min_size_set(o, w, h); - } - - evas_object_show(pop->o_bg); - edje_object_size_min_calc(pop->o_bg, &ww, &wh); e_popup_show(pop->win); - evas_object_resize(pop->o_bg, ww, wh); - pop->w = ww; - pop->h = wh; - /* Popup positioning */ e_gadcon_client_geometry_get(pop->gcc, &gx, &gy, &gw, &gh); zx = pop->gcc->gadcon->zone->x;