From fa49841f362b85c63b791b2587abaafef0982375 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Sun, 12 Sep 2004 04:49:07 +0000 Subject: [PATCH] oops- for repat events this screws up grabbing.. SVN revision: 11612 --- legacy/evas/src/lib/canvas/evas_events.c | 10 +++++----- legacy/evas/src/lib/include/evas_private.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/legacy/evas/src/lib/canvas/evas_events.c b/legacy/evas/src/lib/canvas/evas_events.c index 1ff87c6ad0..668259f70b 100644 --- a/legacy/evas/src/lib/canvas/evas_events.c +++ b/legacy/evas/src/lib/canvas/evas_events.c @@ -175,7 +175,7 @@ evas_event_feed_mouse_down_data(Evas *e, int b, const void *data) obj = l->data; obj->mouse_grabbed = 1; - e->pointer.mouse_grabbed = 1; + e->pointer.mouse_grabbed++; ev.button = b; ev.output.x = e->pointer.x; @@ -260,6 +260,7 @@ evas_event_feed_mouse_up_data(Evas *e, int b, const void *data) obj = l->data; if (!e->pointer.button) obj->mouse_grabbed = 0; + e->pointer.mouse_grabbed--; ev.button = b; ev.output.x = e->pointer.x; ev.output.y = e->pointer.y; @@ -267,7 +268,7 @@ evas_event_feed_mouse_up_data(Evas *e, int b, const void *data) ev.canvas.y = e->pointer.canvas_y; ev.data = (void *)data; ev.modifiers = &(e->modifiers); - ev.locks = &(e->locks); + ev.locks = &(e->locks); if (!e->events_frozen) evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev); } @@ -277,7 +278,6 @@ evas_event_feed_mouse_up_data(Evas *e, int b, const void *data) Evas_List *ins; Evas_List *l; - e->pointer.mouse_grabbed = 0; /* get new list of ins */ ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y); /* go thru old list of in objects */ @@ -365,12 +365,12 @@ evas_event_feed_mouse_move_data(Evas *e, int x, int y, const void *data) e->pointer.canvas_x = evas_coord_screen_x_to_world(e, x); e->pointer.canvas_y = evas_coord_screen_y_to_world(e, y); /* if our mouse button is grabbed to any objects */ - if (e->pointer.mouse_grabbed) + if (e->pointer.mouse_grabbed != 0) { /* go thru old list of in objects */ Evas_List *outs = NULL; Evas_List *l, *copy; - + copy = evas_event_list_copy(e->pointer.object.in); for (l = copy; l; l = l->next) { diff --git a/legacy/evas/src/lib/include/evas_private.h b/legacy/evas/src/lib/include/evas_private.h index 1aabee82ff..833a2b1053 100644 --- a/legacy/evas/src/lib/include/evas_private.h +++ b/legacy/evas/src/lib/include/evas_private.h @@ -276,7 +276,7 @@ struct _Evas struct { char inside : 1; - char mouse_grabbed : 1; + int mouse_grabbed; DATA32 button; int x, y;