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 */
|
/* 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 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);
|
//evas_object_textblock_coords_recalc(eo_obj, obj, obj->private_data);
|
||||||
if (!_relayout_if_needed(eo_obj, o))
|
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);
|
was_v = evas_object_was_visible(eo_obj, obj);
|
||||||
goto done;
|
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 */
|
/* now figure what changed and add draw rects */
|
||||||
/* if it just became visible or invisible */
|
/* if it just became visible or invisible */
|
||||||
is_v = evas_object_is_visible(eo_obj, obj);
|
is_v = evas_object_is_visible(eo_obj, obj);
|
||||||
|
|
Loading…
Reference in New Issue