i think i may have fixed a bug in mosue grabs. not sure though as

repod case eludes me - but a code review got me to clean a bit up.



SVN revision: 51595
This commit is contained in:
Carsten Haitzler 2010-08-24 02:53:33 +00:00
parent 5857b6030f
commit 1c60a50441
2 changed files with 24 additions and 18 deletions

View File

@ -60,13 +60,9 @@ _evas_event_object_list_in_get(Evas *e, Eina_List *in,
if (!evas_map_coords_get(obj->cur.map, x, y,
&(obj->cur.map->mx),
&(obj->cur.map->my), 0))
{
inside = 0;
}
inside = 0;
else
{
parmap = 1;
}
parmap = 1;
}
else
inside = 0;
@ -328,6 +324,8 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
copy = evas_event_list_copy(e->pointer.object.in);
EINA_LIST_FOREACH(copy, l, obj)
{
if (obj->delete_me) continue;
ev.canvas.x = e->pointer.x;
ev.canvas.y = e->pointer.y;
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
@ -408,8 +406,11 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
obj->mouse_grabbed--;
e->pointer.mouse_grabbed--;
}
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev);
if (!obj->delete_me)
{
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev);
}
if (e->delete_me) break;
}
if (copy) copy = eina_list_free(copy);
@ -450,7 +451,6 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
if ((!eina_list_data_find(ins, obj)) ||
(!e->pointer.inside))
{
obj->mouse_in = 0;
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
@ -485,7 +485,6 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
if (!eina_list_data_find(e->pointer.object.in, obj))
{
obj->mouse_in = 1;
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
@ -732,8 +731,11 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
e->pointer.object.in = eina_list_remove(e->pointer.object.in, obj);
obj->mouse_in = 0;
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
if (!obj->delete_me)
{
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
}
}
}
_evas_post_event_callback_call(e);
@ -842,7 +844,6 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
if (!eina_list_data_find(e->pointer.object.in, obj))
{
obj->mouse_in = 1;
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3);
}
@ -910,7 +911,6 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
if (!eina_list_data_find(e->pointer.object.in, obj))
{
obj->mouse_in = 1;
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
@ -979,9 +979,11 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
ev.canvas.y = e->pointer.y;
_evas_event_havemap_adjust(obj, &ev.canvas.x, &ev.canvas.y);
obj->mouse_in = 0;
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
if (!obj->delete_me)
{
if (e->events_frozen <= 0)
evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
}
if (e->delete_me) break;
}
if (copy) copy = eina_list_free(copy);
@ -1520,6 +1522,7 @@ evas_object_pass_events_set(Evas_Object *obj, Eina_Bool pass)
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
if (obj->pass_events == !!pass) return;
obj->pass_events = pass;
evas_object_smart_member_cache_invalidate(obj);
if (evas_object_is_in_output_rect(obj,
@ -1568,6 +1571,7 @@ evas_object_repeat_events_set(Evas_Object *obj, Eina_Bool repeat)
MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
return;
MAGIC_CHECK_END();
if (obj->repeat_events == !!repeat) return;
obj->repeat_events = repeat;
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,

View File

@ -392,6 +392,7 @@ evas_object_del(Evas_Object *obj)
}
obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
obj->mouse_grabbed = 0;
obj->mouse_in = 0;
evas_object_hide(obj);
evas_object_grabs_cleanup(obj);
while (obj->clip.clipees) evas_object_clip_unset(obj->clip.clipees->data);
@ -1137,7 +1138,8 @@ evas_object_hide(Evas_Object *obj)
evas_object_recalc_clippees(obj);
if (!evas_event_passes_through(obj))
{
if (!obj->smart.smart)
if ((!obj->smart.smart) ||
((obj->cur.map) && (obj->cur.map->count == 4) && (obj->cur.usemap)))
{
if (evas_object_is_in_output_rect(obj,
obj->layer->evas->pointer.x,