Evas events: Fix 1 more issue with pointer grabbing.
authortasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 29 Jun 2011 02:03:25 +0000 (02:03 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 29 Jun 2011 02:03:25 +0000 (02:03 +0000)
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.

git-svn-id: http://svn.enlightenment.org/svn/e/trunk/evas@60787 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/canvas/evas_events.c

index 281c909..9aa73ee 100644 (file)
@@ -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)
      {