Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/evas
Dir : e17/libs/evas/src/lib/canvas
Modified Files:
evas_key_grab.c
Log Message:
bleh!
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_key_grab.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- evas_key_grab.c 8 Jul 2003 06:08:26 -0000 1.7
+++ evas_key_grab.c 17 Jul 2003 10:01:13 -0000 1.8
@@ -98,16 +98,31 @@
void
evas_object_grabs_cleanup(Evas_Object *obj)
{
- while (obj->grabs)
+ if (obj->layer->evas->walking_grabs)
{
- Evas_Key_Grab *g;
-
- g = obj->grabs->data;
- if (g->keyname) free(g->keyname);
- free(g);
- obj->layer->evas->grabs = evas_list_remove(obj->layer->evas->grabs, g);
- obj->grabs = evas_list_remove(obj->grabs, g);
- }
+ Evas_List *l;
+
+ for (l = obj->grabs; l; l = l->next)
+ {
+ Evas_Key_Grab *g;
+
+ g = l->data;
+ g->delete_me = 1;
+ }
+ }
+ else
+ {
+ while (obj->grabs)
+ {
+ Evas_Key_Grab *g;
+
+ g = obj->grabs->data;
+ if (g->keyname) free(g->keyname);
+ free(g);
+ obj->layer->evas->grabs = evas_list_remove(obj->layer->evas->grabs, g);
+ obj->grabs = evas_list_remove(obj->grabs, g);
+ }
+ }
}
void
@@ -119,6 +134,7 @@
g = evas_key_grab_find(obj, keyname, modifiers, not_modifiers, 0);
if (!g) return;
g->object->grabs = evas_list_remove(g->object->grabs, g);
+ obj->layer->evas->grabs = evas_list_remove(obj->layer->evas->grabs, g);
if (g->keyname) free(g->keyname);
free(g);
}
-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the
same time. Free trial click here: http://www.vmware.com/wl/offer/345/0
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs