Mercurial > sdl-ios-xcode
changeset 3195:08747e24a50f
Mouse events now report the correct window id and window enter/leave events are now reported.
author | Bob Pendleton <bob@pendleton.com> |
---|---|
date | Thu, 11 Jun 2009 20:08:33 +0000 |
parents | c18c03927a77 |
children | 413672b09bb3 |
files | src/events/SDL_mouse.c src/video/x11/SDL_x11events.c src/video/x11/SDL_x11mouse.c |
diffstat | 3 files changed, 21 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/src/events/SDL_mouse.c Thu Jun 11 06:03:05 2009 +0000 +++ b/src/events/SDL_mouse.c Thu Jun 11 20:08:33 2009 +0000 @@ -97,6 +97,7 @@ /* we're setting the mouse properties */ length = 0; length = SDL_strlen(name); + SDL_mice[index]->focus = 0; SDL_mice[index]->name = SDL_malloc((length + 2) * sizeof(char)); SDL_strlcpy(SDL_mice[index]->name, name, length + 1); SDL_mice[index]->pressure_max = pressure_max;
--- a/src/video/x11/SDL_x11events.c Thu Jun 11 06:03:05 2009 +0000 +++ b/src/video/x11/SDL_x11events.c Thu Jun 11 20:08:33 2009 +0000 @@ -83,8 +83,10 @@ /* Gaining mouse coverage? */ case EnterNotify:{ #ifdef DEBUG_XEVENTS - printf("EnterNotify! (%d,%d)\n", xevent.xcrossing.x, - xevent.xcrossing.y); + printf("EnterNotify! (%d,%d,%d)\n", + xevent.xcrossing.x, + xevent.xcrossing.y, + xevent.xcrossing.mode); if (xevent.xcrossing.mode == NotifyGrab) printf("Mode: NotifyGrab\n"); if (xevent.xcrossing.mode == NotifyUngrab) @@ -92,10 +94,12 @@ #endif if ((xevent.xcrossing.mode != NotifyGrab) && (xevent.xcrossing.mode != NotifyUngrab)) { +#if 1 /* FIXME: Should we reset data for all mice? */ -#if 0 - SDL_SetMouseFocus(0, data->windowID); - SDL_SendMouseMotion(0, 0, move->x, move->y, 0); + for (i = 0; i < SDL_GetNumMice(); ++i) { + SDL_Mouse *mouse = SDL_GetMouse(i); + SDL_SetMouseFocus(mouse->id, data->windowID); + } #endif } } @@ -104,8 +108,10 @@ /* Losing mouse coverage? */ case LeaveNotify:{ #ifdef DEBUG_XEVENTS - printf("LeaveNotify! (%d,%d)\n", xevent.xcrossing.x, - xevent.xcrossing.y); + printf("LeaveNotify! (%d,%d,%d)\n", + xevent.xcrossing.x, + xevent.xcrossing.y, + xevent.xcrossing.mode); if (xevent.xcrossing.mode == NotifyGrab) printf("Mode: NotifyGrab\n"); if (xevent.xcrossing.mode == NotifyUngrab) @@ -114,9 +120,12 @@ if ((xevent.xcrossing.mode != NotifyGrab) && (xevent.xcrossing.mode != NotifyUngrab) && (xevent.xcrossing.detail != NotifyInferior)) { +#if 1 /* FIXME: Should we reset data for all mice? */ -#if 0 - SDL_SetMouseFocus(0, 0); + for (i = 0; i < SDL_GetNumMice(); ++i) { + SDL_Mouse *mouse = SDL_GetMouse(i); + SDL_SetMouseFocus(mouse->id, 0); + } #endif } }