fix mouse grab accounting on delete and hide
authorCarsten Haitzler <raster@rasterman.com>
Sat, 20 Nov 2004 07:41:14 +0000 (07:41 +0000)
committerCarsten Haitzler <raster@rasterman.com>
Sat, 20 Nov 2004 07:41:14 +0000 (07:41 +0000)
SVN revision: 12232

legacy/evas/src/lib/canvas/evas_object_main.c

index 951c97a..695abec 100644 (file)
@@ -665,16 +665,24 @@ evas_object_hide(Evas_Object *obj)
               evas_event_feed_mouse_move(obj->layer->evas, 
                                          obj->layer->evas->pointer.x, 
                                          obj->layer->evas->pointer.y);
-/*   if ((obj->mouse_in) || (obj->mouse_grabbed)) */
+            if (obj->mouse_grabbed > 0)
+              {
+                 if (obj->layer->evas->pointer.mouse_grabbed > 0)
+                   obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
+              }
               {
-                 obj->mouse_in = 0;
                  obj->mouse_grabbed = 0;
                  obj->layer->evas->pointer.object.in = evas_list_remove(obj->layer->evas->pointer.object.in, obj);
-                 if (obj->layer->evas->events_frozen > 0) return;      
+                 if (obj->layer->evas->events_frozen > 0)
+                   {
+                      obj->mouse_in = 0;
+                      return;
+                   }
                  if (obj->mouse_in)
                    {
                       Evas_Event_Mouse_Out ev;
                       
+                      obj->mouse_in = 0;
                       ev.buttons = obj->layer->evas->pointer.button;
                       ev.output.x = obj->layer->evas->pointer.x;
                       ev.output.y = obj->layer->evas->pointer.y;