Evas events: Fix issues with mouse_in/out caused by previous commit.
authortasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 29 Jun 2011 05:05:35 +0000 (05:05 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Wed, 29 Jun 2011 05:05:35 +0000 (05:05 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@60793 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/lib/canvas/evas_events.c

index 9c02b12..2919be6 100644 (file)
@@ -354,8 +354,19 @@ _post_up_handle(Evas *e, unsigned int timestamp, const void *data)
      {
         ins = eina_list_free(ins);
      }
-   /* free our cur ins */
-   eina_list_free(ins);
+
+   if (e->pointer.mouse_grabbed == 0)
+     {
+        /* free our old list of ins */
+        eina_list_free(e->pointer.object.in);
+        /* and set up the new one */
+        e->pointer.object.in = ins;
+     }
+   else
+     {
+        /* free our cur ins */
+        eina_list_free(ins);
+     }
    if (e->pointer.inside)
       evas_event_feed_mouse_move(e, e->pointer.x, e->pointer.y, timestamp, data);
    return post_called;
@@ -741,8 +752,18 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
               }
             if (e->delete_me) break;
          }
-       /* free our current ins */
-       eina_list_free(ins);
+        if (e->pointer.mouse_grabbed == 0)
+          {
+             /* free our old list of ins */
+             eina_list_free(e->pointer.object.in);
+             /* and set up the new one */
+             e->pointer.object.in = ins;
+          }
+        else
+          {
+             /* free our cur ins */
+             eina_list_free(ins);
+          }
         _evas_post_event_callback_call(e);
      }
    _evas_unwalk(e);
@@ -1135,8 +1156,18 @@ evas_event_feed_multi_move(Evas *e,
             if (e->delete_me) break;
          }
        if (copy) copy = eina_list_free(copy);
-       /* free our current ins */
-       eina_list_free(ins);
+        if (e->pointer.mouse_grabbed == 0)
+          {
+             /* free our old list of ins */
+             eina_list_free(e->pointer.object.in);
+             /* and set up the new one */
+             e->pointer.object.in = ins;
+          }
+        else
+          {
+             /* free our cur ins */
+             eina_list_free(ins);
+          }
         _evas_post_event_callback_call(e);
      }
    _evas_unwalk(e);