fix edje parts of type GROUP on size min calc to calc the child groups too

This commit is contained in:
Carsten Haitzler 2013-06-03 17:17:33 +09:00
parent 23ed5115c0
commit 98efd5ad86
3 changed files with 21 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2013-06-03 Carsten Haitzler (The Rasterman)
* Fix edje min size calc to propagate min size calcs to GROUP
items swallowed in automatically.
2013-05-31 ChunEon Park (Hermet)
* Edje: support edc proxy.source_visible, proxy.source_clip

1
NEWS
View File

@ -288,3 +288,4 @@ Fixes:
* Fix srv->start_time (initialization missing). So now
ecore_con_server_uptime_get() is working for plain TCP connections.
* Fix textblock to render pre again if it needs to relayouting.
* Fix edje min size calc to calc sub GROUP parts too.

View File

@ -9,6 +9,7 @@ static void _edje_part_recalc_single(Edje *ed, Edje_Real_Part *ep,
Edje_Real_Part *rel1_to_x, Edje_Real_Part *rel1_to_y,
Edje_Real_Part *rel2_to_x, Edje_Real_Part *rel2_to_y,
Edje_Real_Part *confine_to, Edje_Calc_Params *params,
Evas_Coord mmw, Evas_Coord mmh,
FLOAT_T pos);
#define EINA_COW_CALC_PHYSICS_BEGIN(Calc, Write) \
@ -2178,6 +2179,7 @@ _edje_part_recalc_single(Edje *ed,
Edje_Real_Part *rel2_to_y,
Edje_Real_Part *confine_to,
Edje_Calc_Params *params,
Evas_Coord mmw, Evas_Coord mmh,
FLOAT_T pos)
{
Edje_Color_Class *cc = NULL;
@ -2188,6 +2190,8 @@ _edje_part_recalc_single(Edje *ed,
sc = ed->scale;
if (sc == ZERO) sc = _edje_scale;
_edje_part_recalc_single_min_max(sc, ed, ep, desc, &minw, &minh, &maxw, &maxh);
if (minw < mmw) minw = mmw;
if (minh < mmh) minh = mmh;
/* relative coords of top left & bottom right */
_edje_part_recalc_single_rel(ed, ep, desc, rel1_to_x, rel1_to_y, rel2_to_x, rel2_to_y, params);
@ -2761,6 +2765,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
Edje_Real_Part *confine_to = NULL;
FLOAT_T pos = ZERO, pos2;
Edje_Calc_Params lp3;
Evas_Coord mmw = 0, mmh = 0;
/* GRADIENT ARE GONE, WE MUST IGNORE IT FROM OLD FILE. */
if (ep->part->type == EDJE_PART_TYPE_GRADIENT)
@ -2827,6 +2832,14 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
_edje_recalc_do(ted);
}
}
if (ep->part->type == EDJE_PART_TYPE_GROUP &&
((ep->type == EDJE_RP_TYPE_SWALLOW) &&
(ep->typedata.swallow)) &&
ep->typedata.swallow->swallowed_object)
{
edje_object_size_min_calc(ep->typedata.swallow->swallowed_object,
&mmw, &mmh);
}
#ifdef EDJE_CALC_CACHE
if (ep->state == ed->state && !state)
@ -3021,7 +3034,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
_edje_part_recalc_single(ed, ep, ep->param1.description, chosen_desc, center[0], light[0], persp[0],
rp1[Rel1X], rp1[Rel1Y], rp1[Rel2X], rp1[Rel2Y],
confine_to,
p1, pos);
p1, mmw, mmh, pos);
#ifdef EDJE_CALC_CACHE
if (flags == FLAG_XY)
ep->param1.state = ed->state;
@ -3090,7 +3103,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
rp2[Rel2X],
rp2[Rel2Y],
confine_to,
p2, pos);
p2, mmw, mmh, pos);
#ifdef EDJE_CALC_CACHE
if (flags == FLAG_XY)
ep->param2->state = ed->state;