forked from enlightenment/efl
evas textblock: fix render_pre bug related with clipper
Summary: assumtion: textblock A has the clipper rect B. 1. evas_render_updates_internal start : evas_object_clip_dirty_do( rect B) : evas_object_textblock_render_pre( textblock A) - if textlock A's o->redraw is EINA_TRUE (o->changed=1 is also same case) - textblock A's vis 1->0 - clipper rect B lose the chance to call render_pre function. - clipper rect B's evas_render_mapped function is not called : pending_change(Rect B) - obj->pre_render_done = 0, so rect cannot be get the change to call evas_object_change_reset when rect b remained the pending list and changed value is EINA_TRUE, it cause textblock's rendering problem Reviewers: raster, Hermet, kimcinoo Reviewed By: Hermet Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D7512
This commit is contained in:
parent
7c38c0c915
commit
e4e415d957
|
@ -14783,6 +14783,16 @@ evas_object_textblock_render_pre(Evas_Object *eo_obj,
|
|||
/* then when this is done the object needs to figure if it changed and */
|
||||
/* if so what and where and add the appropriate redraw textblocks */
|
||||
|
||||
/* if someone is clipping this obj - go calculate the clipper */
|
||||
if (obj->cur->clipper)
|
||||
{
|
||||
if (obj->cur->cache.clip.dirty)
|
||||
evas_object_clip_recalc(obj->cur->clipper);
|
||||
obj->cur->clipper->func->render_pre(obj->cur->clipper->object,
|
||||
obj->cur->clipper,
|
||||
obj->cur->clipper->private_data);
|
||||
}
|
||||
|
||||
//evas_object_textblock_coords_recalc(eo_obj, obj, obj->private_data);
|
||||
if (!_relayout_if_needed(eo_obj, o))
|
||||
{
|
||||
|
@ -14813,15 +14823,6 @@ evas_object_textblock_render_pre(Evas_Object *eo_obj,
|
|||
was_v = evas_object_was_visible(eo_obj, obj);
|
||||
goto done;
|
||||
}
|
||||
/* if someone is clipping this obj - go calculate the clipper */
|
||||
if (obj->cur->clipper)
|
||||
{
|
||||
if (obj->cur->cache.clip.dirty)
|
||||
evas_object_clip_recalc(obj->cur->clipper);
|
||||
obj->cur->clipper->func->render_pre(obj->cur->clipper->object,
|
||||
obj->cur->clipper,
|
||||
obj->cur->clipper->private_data);
|
||||
}
|
||||
/* now figure what changed and add draw rects */
|
||||
/* if it just became visible or invisible */
|
||||
is_v = evas_object_is_visible(eo_obj, obj);
|
||||
|
|
Loading…
Reference in New Issue