From 6e8e5e89b594670cbce979b272697c87108f39da Mon Sep 17 00:00:00 2001 From: Jaeun Choi Date: Thu, 13 Nov 2014 10:50:00 +0900 Subject: [PATCH] Evas masking: Implement event masking support In case the clipper is a mask object, we should use precise event masking. By default precise_is_inside is not enabled because it is expensive, but it should probably be set by the application when they use masks as clippers. Signed-off-by: Jean-Philippe Andre --- src/lib/evas/canvas/evas_events.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c index 56ae091d64..39811c44ab 100644 --- a/src/lib/evas/canvas/evas_events.c +++ b/src/lib/evas/canvas/evas_events.c @@ -122,7 +122,11 @@ _evas_event_object_list_raw_in_get(Evas *eo_e, Eina_List *in, } else { - inside = evas_object_is_in_output_rect(eo_obj, obj, x, y, 1, 1); + Evas_Object_Protected_Data *clip = obj->cur->clipper; + if (clip && clip->mask->is_mask && clip->precise_is_inside) + inside = evas_object_is_inside(clip->object, clip, x, y); + else + inside = evas_object_is_in_output_rect(eo_obj, obj, x, y, 1, 1); if (inside) {