discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=fd6b264b1d726a3109332e0ca3a649f52d177d95
commit fd6b264b1d726a3109332e0ca3a649f52d177d95 Author: Mike Blumenkrantz <zm...@osg.samsung.com> Date: Tue Dec 6 11:23:19 2016 -0500 maintain "empty" object's size hints when ibar/ibox resizes the sizing issue in all of these tickets was caused by the "empty" object being deleted, thus allowing the box to reset to 0x0 size hints and returning this value as the overall size during recalc; the result is that all icons would be sized at 0x0 instead of using the preserved orient size as expected fix T4509, T4647, T4830, T4733, T4524 --- src/modules/ibar/e_mod_main.c | 44 ++++++++++++++++++------------------------- src/modules/ibox/e_mod_main.c | 40 ++++++++++++++++----------------------- 2 files changed, 34 insertions(+), 50 deletions(-) diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c index 8171090..6ecbe14 100644 --- a/src/modules/ibar/e_mod_main.c +++ b/src/modules/ibar/e_mod_main.c @@ -511,34 +511,19 @@ _ibar_cb_empty_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA static void _ibar_empty_handle(IBar *b) { - if (!b->icons) + if (!b->o_empty) { - if (!b->o_empty) - { - Evas_Coord w, h; - - b->o_empty = evas_object_rectangle_add(evas_object_evas_get(b->o_box)); - E_EXPAND(b->o_empty); - E_FILL(b->o_empty); - evas_object_event_callback_add(b->o_empty, - EVAS_CALLBACK_MOUSE_DOWN, - _ibar_cb_empty_mouse_down, b); - evas_object_color_set(b->o_empty, 0, 0, 0, 0); - evas_object_show(b->o_empty); - elm_box_pack_end(b->o_box, b->o_empty); - evas_object_geometry_get(b->o_box, NULL, NULL, &w, &h); - if (elm_box_horizontal_get(b->o_box)) - w = h; - else - h = w; - evas_object_size_hint_min_set(b->o_empty, w, h); - } - } - else if (b->o_empty) - { - evas_object_del(b->o_empty); - b->o_empty = NULL; + b->o_empty = evas_object_rectangle_add(evas_object_evas_get(b->o_box)); + E_EXPAND(b->o_empty); + E_FILL(b->o_empty); + evas_object_event_callback_add(b->o_empty, + EVAS_CALLBACK_MOUSE_DOWN, + _ibar_cb_empty_mouse_down, b); + evas_object_color_set(b->o_empty, 0, 0, 0, 0); } + if (b->icons) return; + evas_object_show(b->o_empty); + elm_box_pack_end(b->o_box, b->o_empty); } static void @@ -655,6 +640,13 @@ _ibar_resize_handle(IBar *b) w = h; else h = w; + if (w || h) + evas_object_size_hint_min_set(b->o_empty, w, h); + if (b->icons && evas_object_visible_get(b->o_empty)) + { + elm_box_unpack(b->o_box, b->o_empty); + evas_object_hide(b->o_empty); + } EINA_INLIST_FOREACH(b->icons, ic) { evas_object_size_hint_min_set(ic->o_holder, w, h); diff --git a/src/modules/ibox/e_mod_main.c b/src/modules/ibox/e_mod_main.c index 254bd62..df755d7 100644 --- a/src/modules/ibox/e_mod_main.c +++ b/src/modules/ibox/e_mod_main.c @@ -372,32 +372,17 @@ _ibox_cb_empty_mouse_down(void *data, Evas *e EINA_UNUSED, Evas_Object *obj EINA static void _ibox_empty_handle(IBox *b) { - if (!b->icons) + if (!b->o_empty) { - if (!b->o_empty) - { - Evas_Coord w, h; - - b->o_empty = evas_object_rectangle_add(evas_object_evas_get(b->o_box)); - evas_object_event_callback_add(b->o_empty, EVAS_CALLBACK_MOUSE_DOWN, _ibox_cb_empty_mouse_down, b); - evas_object_color_set(b->o_empty, 0, 0, 0, 0); - evas_object_show(b->o_empty); - elm_box_pack_end(b->o_box, b->o_empty); - evas_object_geometry_get(b->o_box, NULL, NULL, &w, &h); - if (elm_box_horizontal_get(b->o_box)) - w = h; - else - h = w; - E_EXPAND(b->o_empty); - E_FILL(b->o_empty); - evas_object_size_hint_min_set(b->o_empty, w, h); - } - } - else if (b->o_empty) - { - evas_object_del(b->o_empty); - b->o_empty = NULL; + b->o_empty = evas_object_rectangle_add(evas_object_evas_get(b->o_box)); + evas_object_event_callback_add(b->o_empty, EVAS_CALLBACK_MOUSE_DOWN, _ibox_cb_empty_mouse_down, b); + evas_object_color_set(b->o_empty, 0, 0, 0, 0); + E_EXPAND(b->o_empty); + E_FILL(b->o_empty); } + if (b->icons) return; + evas_object_show(b->o_empty); + elm_box_pack_end(b->o_box, b->o_empty); } static void @@ -480,6 +465,13 @@ _ibox_resize_handle(IBox *b) w = h; else h = w; + if (w || h) + evas_object_size_hint_min_set(b->o_empty, w, h); + if (b->icons && evas_object_visible_get(b->o_empty)) + { + elm_box_unpack(b->o_box, b->o_empty); + evas_object_hide(b->o_empty); + } EINA_LIST_FOREACH(b->icons, l, ic) { evas_object_size_hint_min_set(ic->o_holder, w, h); --