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

fixes moving of autosizing bryces
devs/yoz/bryce
Mike Blumenkrantz 7 years ago
parent fb94f1e069
commit 41f5a3e1fd
  1. 35
      src/bin/e_bryce.c

@ -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)

Loading…
Cancel
Save