forked from enlightenment/efl
evas: fix some clipping issues before/after Evas_Map animations
Summary: This is an attempt at fixing: - T1767: The ultimate evil map & clip bug Force recalculation and re-propagation of clipper geometry after or just before a map is applied (only when transiting between map enabled and map disabled). I realized that doing clip_unset+clip_set in the E widget code would fix the issue, but this is not a solution that makes a lot of sense. Unfortunately I have no idea about the side effects of this patch, especially in terms of performance. Fixes T1767 and maybe T1630. Test Plan: Open PackageKit popup in E, check the animations and that clipping works fine both during, before and after the animations. Reviewers: raster, cedric Reviewed By: cedric Subscribers: cedric, Hermet Maniphest Tasks: T1767 Differential Revision: https://phab.enlightenment.org/D1897 Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
This commit is contained in:
parent
17a47136c9
commit
5b4e0ece68
|
@ -526,6 +526,14 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
|
||||||
{
|
{
|
||||||
RDI(level);
|
RDI(level);
|
||||||
RD(" obj mapped\n");
|
RD(" obj mapped\n");
|
||||||
|
if (!hmap && obj->cur->clipper)
|
||||||
|
{
|
||||||
|
// Fix some bad clipping issues before an evas map animation starts
|
||||||
|
evas_object_change(obj->cur->clipper->object, obj->cur->clipper);
|
||||||
|
evas_object_clip_dirty(obj->cur->clipper->object, obj->cur->clipper);
|
||||||
|
evas_object_clip_recalc(obj->cur->clipper);
|
||||||
|
evas_object_update_bounding_box(eo_obj, obj);
|
||||||
|
}
|
||||||
if (obj->changed)
|
if (obj->changed)
|
||||||
{
|
{
|
||||||
if (map != hmap) *redraw_all = 1;
|
if (map != hmap) *redraw_all = 1;
|
||||||
|
@ -577,6 +585,14 @@ _evas_render_phase1_object_process(Evas_Public_Data *e, Evas_Object *eo_obj,
|
||||||
*redraw_all = 1;
|
*redraw_all = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (obj->cur->clipper)
|
||||||
|
{
|
||||||
|
// Fix some bad clipping issues after an evas_map animation finishes
|
||||||
|
evas_object_change(obj->cur->clipper->object, obj->cur->clipper);
|
||||||
|
evas_object_clip_dirty(obj->cur->clipper->object, obj->cur->clipper);
|
||||||
|
evas_object_clip_recalc(obj->cur->clipper);
|
||||||
|
evas_object_update_bounding_box(eo_obj, obj);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* handle normal rendering. this object knows how to handle maps */
|
/* handle normal rendering. this object knows how to handle maps */
|
||||||
|
|
Loading…
Reference in New Issue