jpeg pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=3cb321bf5d67f2354b747773f5a07ec0349cbe80
commit 3cb321bf5d67f2354b747773f5a07ec0349cbe80 Author: Jean-Philippe Andre <[email protected]> Date: Thu Dec 1 14:41:06 2016 +0900 win: Improve bug compatibility for E E has a habit of creating windows with a single content that has no weight and/or no min size, but still expecting those windows to size properly and be resizable. This amends a previous sizing hack (but really it's the same) for logout dialogs, and adds another hack for EFM windows (single edje object with no weight, but window should be resizable). --- src/lib/elementary/efl_ui_win.c | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/lib/elementary/efl_ui_win.c b/src/lib/elementary/efl_ui_win.c index bab64e6..b97ee3d 100644 --- a/src/lib/elementary/efl_ui_win.c +++ b/src/lib/elementary/efl_ui_win.c @@ -253,6 +253,7 @@ struct _Efl_Ui_Win_Data Eina_Bool theme_alpha : 1; /**< alpha value fetched by a theme. this has higher priority than application_alpha */ Eina_Bool application_alpha : 1; /**< alpha value set by an elm_win_alpha_set() api. this has lower priority than theme_alpha */ Eina_Bool tmp_updating_hints : 1; + Eina_Bool single_edje_content: 1; /* hack for E */ }; struct _Input_Pointer_Iterator @@ -3282,7 +3283,7 @@ _elm_win_xwin_update(Efl_Ui_Win_Data *sd) static void _elm_win_resize_objects_eval(Evas_Object *obj) { - ELM_WIN_DATA_GET(obj, sd); + Efl_Ui_Win_Data *sd = efl_data_scope_get(obj, MY_CLASS); Evas_Coord w, h, minw, minh, maxw, maxh, ow, oh; Eina_Bool unresizable; double wx, wy; @@ -3291,9 +3292,17 @@ _elm_win_resize_objects_eval(Evas_Object *obj) if (minw < 1) minw = 1; if (minh < 1) minh = 1; + // If content has a weight, make resizable efl_gfx_size_hint_weight_get(sd->legacy.edje, &wx, &wy); + + // Content max hint is ignored maxw = sd->max_w; maxh = sd->max_h; + + // Compatibility hack (for E) + if (sd->single_edje_content && !wx && !wy) + wx = wy = 1; + if (!wx) maxw = minw; else if (maxw < 1) maxw = 32767; if (!wy) maxh = minh; @@ -7692,13 +7701,15 @@ elm_win_resize_object_add(Eo *obj, Evas_Object *subobj) return; } + // Little hack for E + if (evas_obj_box_count(sd->legacy.box) > 0) + sd->single_edje_content = 0; + else if (efl_isa(subobj, EDJE_OBJECT_CLASS)) + sd->single_edje_content = 1; + ret = elm_widget_sub_object_add(obj, subobj); ret &= (evas_object_box_append(sd->legacy.box, subobj) != NULL); - // Little hack for E (edje object set as resize object... but never updated) - if (efl_isa(subobj, EDJE_OBJECT_CLASS)) - edje_object_update_hints_set(subobj, 1); - if (!ret) ERR("could not add sub object %p to window %p", subobj, obj); } --
