discomfitor pushed a commit to branch master. http://git.enlightenment.org/core/enlightenment.git/commit/?id=6831544d71103e5e5f3bf9da836b98bef2788102
commit 6831544d71103e5e5f3bf9da836b98bef2788102 Author: Mike Blumenkrantz <zm...@osg.samsung.com> Date: Fri Dec 11 16:17:57 2015 -0500 use current box geometry for calculating desktop ibar/ibox sizing desktop gadgets don't have minimum size set from parent objects, so it's necessary to use the current object geometry in order to correctly size these gadgets since the top-most widget is from elm fix T2907 --- src/modules/ibar/e_mod_main.c | 21 +++++++++++---------- src/modules/ibox/e_mod_main.c | 8 +++++++- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/modules/ibar/e_mod_main.c b/src/modules/ibar/e_mod_main.c index 4980fe3..4a8a9a7 100644 --- a/src/modules/ibar/e_mod_main.c +++ b/src/modules/ibar/e_mod_main.c @@ -268,7 +268,7 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) ci = _ibar_config_item_get(id); inst->ci = ci; if (!ci->dir) ci->dir = eina_stringshare_add("default"); - b = _ibar_new(gc->o_container, inst); + b = _ibar_new(gc->o_container ?: e_comp->elm, inst); gcc = e_gadcon_client_new(gc, name, id, style, b->o_outerbox); e_gadcon_client_autoscroll_toggle_disabled_set(gcc, !ci->dont_add_nonorder); gcc->data = inst; @@ -287,6 +287,7 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) evas_object_event_callback_add(b->o_outerbox, EVAS_CALLBACK_RESIZE, _ibar_cb_obj_moveresize, inst); ibar_config->instances = eina_list_append(ibar_config->instances, inst); + _ibar_resize_handle(b); inst->iconify_provider = e_comp_object_effect_mover_add(80, "e,action,*iconify", _ibar_cb_iconify_provider, inst); return gcc; } @@ -638,16 +639,17 @@ _ibar_resize_handle(IBar *b) IBar_Icon *ic; Evas_Coord w, h; + if (!b->inst->gcc) return; elm_box_recalculate(b->o_box); elm_box_recalculate(b->o_outerbox); - evas_object_size_hint_min_get(b->o_outerbox, &w, &h); - if (b->inst->gcc) - { - if (b->inst->gcc->max.w) - w = MIN(w, b->inst->gcc->max.w); - if (b->inst->gcc->max.h) - h = MIN(h, b->inst->gcc->max.h); - } + if (!e_gadcon_site_is_desktop(b->inst->gcc->gadcon->location->site)) + evas_object_size_hint_min_get(b->o_outerbox, &w, &h); + else + evas_object_geometry_get(b->o_outerbox, NULL, NULL, &w, &h); + if (b->inst->gcc->max.w) + w = MIN(w, b->inst->gcc->max.w); + if (b->inst->gcc->max.h) + h = MIN(h, b->inst->gcc->max.h); if (elm_box_horizontal_get(b->o_box)) w = h; else @@ -666,7 +668,6 @@ _ibar_resize_handle(IBar *b) evas_object_size_hint_min_set(b->o_sep, 8, 8); evas_object_size_hint_max_set(b->o_sep, w, h); } - if (!b->inst->gcc) return; elm_box_recalculate(b->o_box); elm_box_recalculate(b->o_outerbox); evas_object_size_hint_min_get(b->o_outerbox, &w, &h); diff --git a/src/modules/ibox/e_mod_main.c b/src/modules/ibox/e_mod_main.c index 3a09bb8..254bd62 100644 --- a/src/modules/ibox/e_mod_main.c +++ b/src/modules/ibox/e_mod_main.c @@ -184,7 +184,7 @@ _gc_init(E_Gadcon *gc, const char *name, const char *id, const char *style) ci = _ibox_config_item_get(id); inst->ci = ci; - b = _ibox_new(gc->o_container, gc->zone); + b = _ibox_new(gc->o_container ?: e_comp->elm, gc->zone); b->inst = inst; inst->ibox = b; o = b->o_box; @@ -448,6 +448,8 @@ _ibox_fill(IBox *b) if (!e_gadcon_site_is_desktop(b->inst->gcc->gadcon->location->site)) return; elm_box_recalculate(b->o_box); evas_object_size_hint_min_get(b->o_box, &mw, &mh); + if ((!mw) && (!mh)) + evas_object_geometry_get(b->o_box, NULL, NULL, &mw, &mh); evas_object_geometry_get(b->inst->gcc->o_frame, NULL, NULL, NULL, &h); evas_object_resize(b->inst->gcc->o_frame, MIN(mw, b->inst->gcc->gadcon->zone->w), MAX(h, mh)); } @@ -1111,6 +1113,8 @@ _ibox_cb_event_client_iconify(void *data EINA_UNUSED, int type EINA_UNUSED, void if (!e_gadcon_site_is_desktop(b->inst->gcc->gadcon->location->site)) continue; elm_box_recalculate(b->o_box); evas_object_size_hint_min_get(b->o_box, &mw, &mh); + if ((!mw) && (!mh)) + evas_object_geometry_get(b->o_box, NULL, NULL, &mw, &mh); evas_object_geometry_get(b->inst->gcc->o_frame, NULL, NULL, NULL, &h); evas_object_resize(b->inst->gcc->o_frame, MIN(mw, b->inst->gcc->gadcon->zone->w), MAX(h, mh)); } @@ -1143,6 +1147,8 @@ _ibox_cb_event_client_uniconify(void *data EINA_UNUSED, int type EINA_UNUSED, vo if (!e_gadcon_site_is_desktop(b->inst->gcc->gadcon->location->site)) continue; elm_box_recalculate(b->o_box); evas_object_size_hint_min_get(b->o_box, &mw, &mh); + if ((!mw) && (!mh)) + evas_object_geometry_get(b->o_box, NULL, NULL, &mw, &mh); evas_object_geometry_get(b->inst->gcc->o_frame, NULL, NULL, NULL, &h); evas_object_resize(b->inst->gcc->o_frame, MIN(mw, b->inst->gcc->gadcon->zone->w), MAX(h, mh)); } --