Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/ecore

Dir     : e17/libs/ecore/src/lib/ecore_x


Modified Files:
        ecore_x.c ecore_x_events.c 


Log Message:


safe grab/ungrab

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x.c,v
retrieving revision 1.81
retrieving revision 1.82
diff -u -3 -r1.81 -r1.82
--- ecore_x.c   16 May 2005 15:42:50 -0000      1.81
+++ ecore_x.c   20 May 2005 09:22:10 -0000      1.82
@@ -1384,7 +1384,7 @@
    unsigned int        b;
    unsigned int        m;
    unsigned int        locks[8];
-   int                 i, shuffle = 0;
+   int                 i, shuffle = 0, found = 0;
    
    b = button;
    if (b == 0) b = AnyButton;
@@ -1400,14 +1400,21 @@
    locks[7] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
    for (i = 0; i < 8; i++)
      XUngrabButton(_ecore_x_disp, b, m | locks[i], win);
-   for (i = 0; i < _ecore_window_grabs_num - 1; i++)
+   if (_ecore_window_grabs_num > 0)
      {
-       if (_ecore_window_grabs[i] == win) shuffle = 1;
-       if (shuffle) _ecore_window_grabs[i] = _ecore_window_grabs[i + 1];
+       for (i = 0; i < (_ecore_window_grabs_num - 1); i++)
+         {
+            if (shuffle) _ecore_window_grabs[i] = _ecore_window_grabs[i + 1];
+            if ((!shuffle) && (_ecore_window_grabs[i] == win))
+              shuffle = 1;
+         }
+       if (shuffle)
+         {
+            _ecore_window_grabs_num--;
+            _ecore_window_grabs = realloc(_ecore_window_grabs, 
+                                          _ecore_window_grabs_num * 
sizeof(Window));
+         }
      }
-   _ecore_window_grabs_num--;
-   _ecore_window_grabs = realloc(_ecore_window_grabs, 
-                                _ecore_window_grabs_num * sizeof(Window));
 }
 
 int      _ecore_key_grabs_num = 0;
@@ -1484,14 +1491,21 @@
    locks[7] = ECORE_X_LOCK_CAPS   | ECORE_X_LOCK_NUM    | ECORE_X_LOCK_SCROLL;
    for (i = 0; i < 8; i++)
      XUngrabKey(_ecore_x_disp, keycode, m | locks[i], win);
-   for (i = 0; i < _ecore_key_grabs_num - 1; i++)
+   if (_ecore_key_grabs_num > 0)
      {
-       if (_ecore_key_grabs[i] == win) shuffle = 1;
-       if (shuffle) _ecore_key_grabs[i] = _ecore_key_grabs[i + 1];
+       for (i = 0; i < (_ecore_key_grabs_num - 1); i++)
+         {
+            if (shuffle) _ecore_key_grabs[i] = _ecore_key_grabs[i + 1];
+            if ((!shuffle) && (_ecore_key_grabs[i] == win))
+              shuffle = 1;
+         }
+       if (shuffle)
+         {
+            _ecore_key_grabs_num--;
+            _ecore_key_grabs = realloc(_ecore_key_grabs, 
+                                       _ecore_key_grabs_num * sizeof(Window));
+         }
      }
-   _ecore_key_grabs_num--;
-   _ecore_key_grabs = realloc(_ecore_key_grabs, 
-                                _ecore_key_grabs_num * sizeof(Window));
 }
 
 /**
===================================================================
RCS file: 
/cvsroot/enlightenment/e17/libs/ecore/src/lib/ecore_x/ecore_x_events.c,v
retrieving revision 1.58
retrieving revision 1.59
diff -u -3 -r1.58 -r1.59
--- ecore_x_events.c    17 May 2005 11:59:50 -0000      1.58
+++ ecore_x_events.c    20 May 2005 09:22:10 -0000      1.59
@@ -315,9 +315,9 @@
                  int replay = 0;
                  
                  if (_ecore_window_grab_replay_func)
-              replay = 
_ecore_window_grab_replay_func(_ecore_window_grab_replay_data, 
-                                                      
ECORE_X_EVENT_MOUSE_WHEEL,
-                                                      e);
+                   replay = 
_ecore_window_grab_replay_func(_ecore_window_grab_replay_data, 
+                                                           
ECORE_X_EVENT_MOUSE_WHEEL,
+                                                           e);
                  if (replay)
                    XAllowEvents(xevent->xbutton.display,
                                 ReplayPointer,




-------------------------------------------------------
This SF.Net email is sponsored by Oracle Space Sweepstakes
Want to be the first software developer in space?
Enter now for the Oracle Space Sweepstakes!
http://ads.osdn.com/?ad_id=7412&alloc_id=16344&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to