_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)
{
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)
{
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);
}