loop bryce autosize recalc when gadget site has not yet calculated its size

fixes moving of autosizing bryces
This commit is contained in:
Mike Blumenkrantz 2016-10-20 12:12:27 -04:00
parent fb94f1e069
commit 41f5a3e1fd
1 changed files with 23 additions and 12 deletions

View File

@ -218,20 +218,31 @@ _bryce_autosize(Bryce *b)
}
else
evas_object_geometry_get(b->parent, NULL, NULL, &maxw, &maxh);
if (b->size_changed)
do
{
evas_object_geometry_get(b->bryce, NULL, NULL, &w, &h);
elm_object_content_unset(b->scroller);
if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
evas_object_resize(b->bryce, w * b->size * e_scale / h, b->size * e_scale);
else if (b->orient == E_GADGET_SITE_ORIENT_VERTICAL)
evas_object_resize(b->bryce, b->size * e_scale, h * b->size * e_scale / w);
evas_object_smart_need_recalculate_set(b->site, 1);
evas_object_size_hint_min_set(b->site, -1, -1);
evas_object_smart_calculate(b->site);
elm_object_content_set(b->scroller, b->site);
if (b->size_changed)
{
evas_object_geometry_get(b->bryce, NULL, NULL, &w, &h);
elm_object_content_unset(b->scroller);
if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)
{
evas_object_resize(b->bryce, w * b->size * e_scale / h, b->size * e_scale);
evas_object_resize(b->site, w * b->size * e_scale / h, b->size * e_scale);
}
else if (b->orient == E_GADGET_SITE_ORIENT_VERTICAL)
{
evas_object_resize(b->bryce, b->size * e_scale, h * b->size * e_scale / w);
evas_object_resize(b->site, b->size * e_scale, h * b->size * e_scale / w);
}
evas_object_smart_need_recalculate_set(b->site, 1);
evas_object_size_hint_min_set(b->site, -1, -1);
evas_object_smart_calculate(b->site);
elm_object_content_set(b->scroller, b->site);
}
evas_object_size_hint_min_get(b->site, &sw, &sh);
if ((!sw) && (!sh)) b->size_changed = 1;
}
evas_object_size_hint_min_get(b->site, &sw, &sh);
while ((!sw) && (!sh));
edje_object_size_min_calc(elm_layout_edje_get(b->layout), &lw, &lh);
_bryce_position(b, lw + sw, lh + sh, &x, &y);
if (b->orient == E_GADGET_SITE_ORIENT_HORIZONTAL)