From: Hosang Kim Date: Sat, 10 Dec 2016 12:01:33 +0000 (+0900) Subject: evas_events: fix searching logic to find objects can receive events. X-Git-Tag: accepted/tizen/common/20170102.152350~89 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=878759f5a57affcdf59fe7529d670d14aec4f58b;p=platform%2Fupstream%2Fefl.git evas_events: fix searching logic to find objects can receive events. 1. _evas_event_object_list_raw_in_get() API is designed to search objects list from last. But sometimes it is not working. 2. If proxy source is set, event_passes_through is not checked. event_passes_through is respected regardless of proxy source. refer to: https://phab.enlightenment.org/rEFL30d98fa1bd3be621897d6240f26801b2a53c427d Change-Id: I1dffc30e3920441a8065d61437abaa7013da61d0 --- diff --git a/src/lib/evas/canvas/evas_events.c b/src/lib/evas/canvas/evas_events.c index 41caf91..ac21cf0 100644 --- a/src/lib/evas/canvas/evas_events.c +++ b/src/lib/evas/canvas/evas_events.c @@ -58,7 +58,7 @@ _evas_event_object_list_raw_in_get(Evas *eo_e, Eina_List *in, int inside; if (!list) return in; - for (obj = _EINA_INLIST_CONTAINER(obj, list); + for (obj = _EINA_INLIST_CONTAINER(obj, eina_inlist_last(list)); obj; obj = _EINA_INLIST_CONTAINER(obj, EINA_INLIST_GET(obj)->prev)) { @@ -68,9 +68,9 @@ _evas_event_object_list_raw_in_get(Evas *eo_e, Eina_List *in, *no_rep = 1; return in; } + if (evas_event_passes_through(eo_obj, obj)) continue; if (!source) { - if (evas_event_passes_through(eo_obj, obj)) continue; if (evas_object_is_source_invisible(eo_obj, obj)) continue; } if ((obj->delete_me == 0) &&