From 067053b97027fdacbcf59dc2e9598f32f215caa7 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Wed, 29 Jun 2011 02:03:25 +0000 Subject: [PATCH] Evas events: Fix 1 more issue with pointer grabbing. We only need to change the list of grabbed objects if we are initiating a new grab, and not if are already in a grab because of multi touch. SVN revision: 60787 --- legacy/evas/src/lib/canvas/evas_events.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/legacy/evas/src/lib/canvas/evas_events.c b/legacy/evas/src/lib/canvas/evas_events.c index 281c909923..9aa73eec70 100644 --- a/legacy/evas/src/lib/canvas/evas_events.c +++ b/legacy/evas/src/lib/canvas/evas_events.c @@ -204,7 +204,6 @@ EAPI void evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data) { Eina_List *l, *copy; - Eina_List *ins; Evas_Event_Mouse_Down ev; Evas_Object *obj; @@ -234,11 +233,17 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int ev.event_flags = EVAS_EVENT_FLAG_NONE; _evas_walk(e); - ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y); - /* free our old list of ins */ - e->pointer.object.in = eina_list_free(e->pointer.object.in); - /* and set up the new one */ - e->pointer.object.in = ins; + /* If this is the first finger down, i.e no other fingers pressed, + * get a new event list, otherwise, keep the current grabbed list. */ + if (e->pointer.mouse_grabbed == 0) + { + Eina_List *ins; + ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y); + /* free our old list of ins */ + e->pointer.object.in = eina_list_free(e->pointer.object.in); + /* and set up the new one */ + e->pointer.object.in = ins; + } copy = evas_event_list_copy(e->pointer.object.in); EINA_LIST_FOREACH(copy, l, obj) {