edje - Fix to update map enabled part when edje object is moved.
This commit is contained in:
parent
035d573571
commit
12aba0db5a
|
@ -1,3 +1,7 @@
|
|||
2013-11-21 ChunEon Park (Hermet)
|
||||
|
||||
* Edje: Fix to update map-enabled part when the edje object is moved.
|
||||
|
||||
2013-11-20 Cedric Bail
|
||||
|
||||
* Eina: Fix a possible race condition during eina_file_close.
|
||||
|
|
1
NEWS
1
NEWS
|
@ -437,6 +437,7 @@ Fixes:
|
|||
- Fixed memory leak in the edje map color transition.
|
||||
- Add null checking for name of anchor and item in geometry get functions.
|
||||
- Fix use of eina_hash_pointer to actually look at the pointer value.
|
||||
- Fix to update map-enabled part when the edje object is moved.
|
||||
|
||||
* Efreet:
|
||||
- Fix desktop command parsing of https.
|
||||
|
|
|
@ -650,7 +650,6 @@ _edje_recalc_do(Edje *ed)
|
|||
need_calc = evas_object_smart_need_recalculate_get(ed->obj);
|
||||
evas_object_smart_need_recalculate_set(ed->obj, 0);
|
||||
if (!ed->dirty) return;
|
||||
ed->have_mapped_part = EINA_FALSE;
|
||||
ed->dirty = EINA_FALSE;
|
||||
ed->state++;
|
||||
for (i = 0; i < ed->table_parts_size; i++)
|
||||
|
@ -3353,6 +3352,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
(statep1 >= ep->param1.state) ||
|
||||
proxy_invalidate ||
|
||||
state ||
|
||||
(ep->map_on && ed->have_mapped_part) ||
|
||||
((ep->part->type == EDJE_PART_TYPE_TEXT ||
|
||||
ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) &&
|
||||
ed->text_part_change))
|
||||
|
@ -3421,6 +3421,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
(statep2 >= ep->param2->state) ||
|
||||
proxy_invalidate ||
|
||||
state ||
|
||||
(ep->map_on && ed->have_mapped_part) ||
|
||||
((ep->part->type == EDJE_PART_TYPE_TEXT ||
|
||||
ep->part->type == EDJE_PART_TYPE_TEXTBLOCK) &&
|
||||
ed->text_part_change))
|
||||
|
@ -3894,6 +3895,7 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
static Evas_Map *map = NULL;
|
||||
|
||||
ed->have_mapped_part = EINA_TRUE;
|
||||
ep->map_on = EINA_TRUE;
|
||||
// create map and populate with part geometry
|
||||
if (!map) map = evas_map_new(4);
|
||||
|
||||
|
@ -3915,6 +3917,8 @@ _edje_part_recalc(Edje *ed, Edje_Real_Part *ep, int flags, Edje_Calc_Params *sta
|
|||
}
|
||||
else
|
||||
{
|
||||
ep->map_on = EINA_FALSE;
|
||||
|
||||
if (ep->nested_smart)
|
||||
{ /* Cancel map of smart obj holding nested parts */
|
||||
eo_do(ep->nested_smart,
|
||||
|
|
|
@ -1594,6 +1594,7 @@ struct _Edje_Real_Part
|
|||
#ifdef EDJE_CALC_CACHE
|
||||
Eina_Bool invalidate : 1; // 0
|
||||
#endif
|
||||
Eina_Bool map_on : 1; // 0
|
||||
}; // 128
|
||||
// WITH EDJE_CALC_CACHE: 407
|
||||
|
||||
|
|
|
@ -151,6 +151,7 @@ _edje_smart_move(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
|
|||
Evas_Coord x = va_arg(*list, Evas_Coord);
|
||||
Evas_Coord y = va_arg(*list, Evas_Coord);
|
||||
Edje *ed = _pd;
|
||||
unsigned int i;
|
||||
|
||||
if ((ed->x == x) && (ed->y == y)) return;
|
||||
ed->x = x;
|
||||
|
@ -168,43 +169,41 @@ _edje_smart_move(Eo *obj EINA_UNUSED, void *_pd, va_list *list)
|
|||
return;
|
||||
}
|
||||
|
||||
for (i = 0; i < ed->table_parts_size; i++)
|
||||
{
|
||||
Edje_Real_Part *ep;
|
||||
|
||||
ep = ed->table_parts[i];
|
||||
if ((ep->type == EDJE_RP_TYPE_TEXT) && (ep->typedata.text))
|
||||
{
|
||||
evas_object_move(ep->object,
|
||||
ed->x + ep->x + ep->typedata.text->offset.x,
|
||||
ed->y + ep->y + ep->typedata.text->offset.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
evas_object_move(ep->object, ed->x + ep->x, ed->y + ep->y);
|
||||
if ((ep->type == EDJE_RP_TYPE_SWALLOW) &&
|
||||
(ep->typedata.swallow))
|
||||
{
|
||||
if (ep->typedata.swallow->swallowed_object)
|
||||
evas_object_move
|
||||
(ep->typedata.swallow->swallowed_object,
|
||||
ed->x + ep->x,
|
||||
ed->y + ep->y);
|
||||
}
|
||||
}
|
||||
if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
|
||||
_edje_entry_real_part_configure(ed, ep);
|
||||
}
|
||||
|
||||
if (ed->have_mapped_part)
|
||||
{
|
||||
ed->dirty = EINA_TRUE;
|
||||
_edje_recalc_do(ed);
|
||||
ed->have_mapped_part = EINA_FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < ed->table_parts_size; i++)
|
||||
{
|
||||
Edje_Real_Part *ep;
|
||||
|
||||
ep = ed->table_parts[i];
|
||||
if ((ep->type == EDJE_RP_TYPE_TEXT) && (ep->typedata.text))
|
||||
{
|
||||
evas_object_move(ep->object,
|
||||
ed->x + ep->x + ep->typedata.text->offset.x,
|
||||
ed->y + ep->y + ep->typedata.text->offset.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
evas_object_move(ep->object, ed->x + ep->x, ed->y + ep->y);
|
||||
if ((ep->type == EDJE_RP_TYPE_SWALLOW) &&
|
||||
(ep->typedata.swallow))
|
||||
{
|
||||
if (ep->typedata.swallow->swallowed_object)
|
||||
evas_object_move
|
||||
(ep->typedata.swallow->swallowed_object,
|
||||
ed->x + ep->x,
|
||||
ed->y + ep->y);
|
||||
}
|
||||
}
|
||||
if (ep->part->entry_mode > EDJE_ENTRY_EDIT_MODE_NONE)
|
||||
_edje_entry_real_part_configure(ed, ep);
|
||||
}
|
||||
}
|
||||
// _edje_emit(ed, "move", NULL);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue