Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/canvas


Modified Files:
        evas_events.c 


Log Message:


fix mouse in/out grab issues

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_events.c,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -3 -r1.26 -r1.27
--- evas_events.c       17 Sep 2004 13:47:47 -0000      1.26
+++ evas_events.c       21 Sep 2004 09:33:18 -0000      1.27
@@ -372,6 +372,7 @@
    e->pointer.y = y;
    e->pointer.canvas_x = evas_coord_screen_x_to_world(e, x);
    e->pointer.canvas_y = evas_coord_screen_y_to_world(e, y);
+   printf("mov %i %i\n", x, y);
    if ((!e->pointer.inside) && (e->pointer.mouse_grabbed == 0)) return;
    /* if our mouse button is grabbed to any objects */   
    if (e->pointer.mouse_grabbed != 0)
@@ -386,6 +387,7 @@
             Evas_Object *obj;
             
             obj = l->data;
+            printf("int %p\n", obj);
             if ((obj->cur.visible) &&
                 (evas_object_clippers_is_visible(obj)) &&
                 (!evas_event_passes_through(obj)) &&
@@ -407,7 +409,8 @@
                       ev.prev.canvas.y = pcy;
                       ev.data = (void *)data;
                       ev.modifiers = &(e->modifiers);
-                      ev.locks = &(e->locks);                 
+                      ev.locks = &(e->locks);
+                      printf("mov %p\n", obj);
                       if (!e->events_frozen)
                         evas_object_event_callback_call(obj, 
EVAS_CALLBACK_MOUSE_MOVE, &ev);
                    }
@@ -435,6 +438,7 @@
                  ev.data = (void *)data;
                  ev.modifiers = &(e->modifiers);
                  ev.locks = &(e->locks);
+                 printf("out %p\n", obj);
                  if (!e->events_frozen)
                    evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
               }             
@@ -553,6 +557,8 @@
    e->pointer.inside = 1;
 
    if (e->events_frozen > 0) return;
+
+   if (e->pointer.mouse_grabbed != 0) return;
    
    /* get new list of ins */
    ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y);
@@ -602,12 +608,14 @@
    
    if (e->events_frozen > 0) return;
    
+   printf("try to feed mouse out\n");
    /* if our mouse button is grabbed to any objects */   
    if (e->pointer.mouse_grabbed == 0)
      {
        /* go thru old list of in objects */
        Evas_List *l, *copy;
 
+       printf("not grabbed!\n");
        copy = evas_event_list_copy(e->pointer.object.in);
        for (l = copy; l; l = l->next)
          {
@@ -630,9 +638,9 @@
                    evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
               }
          }
+       /* free our old list of ins */
+       e->pointer.object.in =  evas_list_free(e->pointer.object.in);
      }
-   /* free our old list of ins */
-   e->pointer.object.in =  evas_list_free(e->pointer.object.in);
 }
 
 /**




-------------------------------------------------------
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 24. Go here: http://sf.net/ppc_contest.php
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to