new attempt to fix the hidden object event thing without breaking

dnd... this makes for consistent behavior. :)



SVN revision: 63599
This commit is contained in:
Carsten Haitzler 2011-09-25 04:43:02 +00:00
parent d579c7812d
commit 0088ea3d8b
1 changed files with 16 additions and 11 deletions

View File

@ -413,6 +413,12 @@ evas_object_del(Evas_Object *obj)
_evas_object_event_new();
evas_object_event_callback_call(obj, EVAS_CALLBACK_DEL, NULL);
_evas_post_event_callback_call(obj->layer->evas);
if (obj->mouse_grabbed > 0)
obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
if ((obj->mouse_in) || (obj->mouse_grabbed > 0))
obj->layer->evas->pointer.object.in = eina_list_remove(obj->layer->evas->pointer.object.in, obj);
obj->mouse_grabbed = 0;
obj->mouse_in = 0;
if (obj->name) evas_object_name_set(obj, NULL);
if (!obj->layer)
{
@ -907,15 +913,14 @@ evas_object_hide(Evas_Object *obj)
obj->layer->evas->last_timestamp,
NULL);
if (obj->delete_me) return;
/* this is at odds to handling events when an obj is moved out of the mouse
* ore resized out or clipped out. if mouse is grabbed - regardless of
* visibility, mouse move events should keep happening and mouse up.
* for better or worse it's at least consistent.
if (obj->mouse_grabbed > 0)
{
// if (obj->layer->evas->pointer.mouse_grabbed >= obj->mouse_grabbed)
obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
}
obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
if ((obj->mouse_in) || (obj->mouse_grabbed > 0))
{
obj->layer->evas->pointer.object.in = eina_list_remove(obj->layer->evas->pointer.object.in, obj);
}
obj->layer->evas->pointer.object.in = eina_list_remove(obj->layer->evas->pointer.object.in, obj);
obj->mouse_grabbed = 0;
if (obj->layer->evas->events_frozen > 0)
{
@ -942,20 +947,20 @@ evas_object_hide(Evas_Object *obj)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
_evas_post_event_callback_call(obj->layer->evas);
}
*/
}
}
}
else
{
/*
if (obj->mouse_grabbed > 0)
{
// if (obj->layer->evas->pointer.mouse_grabbed >= obj->mouse_grabbed)
obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
}
obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
if ((obj->mouse_in) || (obj->mouse_grabbed > 0))
obj->layer->evas->pointer.object.in = eina_list_remove(obj->layer->evas->pointer.object.in, obj);
obj->mouse_grabbed = 0;
obj->mouse_in = 0;
*/
}
evas_object_inform_call_hide(obj);
}