ctxpopup: Fix wrong popup size.

Summary:
In case, when ctxpopup content have larger size than parent object, (by height, width or both) was resized popup at the full width or height of parent object size.
@fix

Reviewers: raster, seoz, cedric, Hermet

Reviewed By: Hermet

Differential Revision: https://phab.enlightenment.org/D1266
This commit is contained in:
Mykyta Biliavskyi 2014-08-04 19:46:03 +09:00 committed by ChunEon Park
parent 8b84bede4f
commit 36ac3603d7
1 changed files with 13 additions and 2 deletions

View File

@ -656,9 +656,20 @@ _elm_ctxpopup_elm_layout_sizing_eval(Eo *obj, Elm_Ctxpopup_Data *sd)
if ((list_size.x >= rect.w) || (list_size.y >= rect.h))
{
elm_list_mode_set(sd->list, ELM_LIST_COMPRESS);
evas_object_size_hint_min_set(sd->box, rect.w, rect.h);
evas_object_size_hint_min_set(obj, rect.w, rect.h);
evas_object_size_hint_min_set(obj, list_size.x, list_size.y);
}
/*
Decrease height of main object initiate recalc of size (sizing_eval).
At each iteration of calculating size height of the object
will be closer to the height of the list.
*/
if (list_size.y < rect.h) rect.h--;
}
else if (sd->content)
{
evas_object_geometry_get(sd->content, 0, 0, &list_size.x, &list_size.y);
if ((list_size.x >= rect.w) || (list_size.y >= rect.h))
evas_object_size_hint_min_set(obj, list_size.x, list_size.y);
}
evas_object_geometry_get(sd->parent, NULL, NULL, &parent_size.x, &parent_size.y);