Mercurial > sdl-ios-xcode
diff src/events/SDL_mouse.c @ 2794:f7872b7a8732
Fixed mouse coordinate range on Mac OS X
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Thu, 27 Nov 2008 21:53:18 +0000 |
parents | f55c87ae336b |
children | 97ba0be8b565 |
line wrap: on
line diff
--- a/src/events/SDL_mouse.c Thu Nov 27 05:29:12 2008 +0000 +++ b/src/events/SDL_mouse.c Thu Nov 27 21:53:18 2008 +0000 @@ -34,7 +34,6 @@ static int *SDL_IdIndex = NULL; static int SDL_highestId = -1; static int last_x, last_y; /* the last reported x and y coordinates by the system cursor */ -int x_max, y_max; /* current window width and height */ /* Public functions */ @@ -365,6 +364,21 @@ if (!focus) { SDL_SendWindowEvent(mouse->focus, SDL_WINDOWEVENT_ENTER, 0, 0); } + SDL_GetWindowSize(windowID, &mouse->x_max, &mouse->y_max); + } +} + +void +SDL_SetMouseFocusSize(SDL_WindowID windowID, int w, int h) +{ + int i; + + for (i = 0; i < SDL_num_mice; ++i) { + SDL_Mouse *mouse = SDL_GetMouse(i); + if (mouse && mouse->focus == windowID) { + mouse->x_max = w; + mouse->y_max = h; + } } } @@ -407,15 +421,6 @@ int xrel; int yrel; - /* while using the relative mode and many windows, we have to be sure, - that the pointers find themselves inside the windows */ - if (x > x_max) { - x = x_max; - } - if (y > y_max) { - y = y_max; - } - if (!mouse || mouse->flush_motion) { return 0; } @@ -445,15 +450,17 @@ mouse->x = x; mouse->y = y; } else { - if (mouse->x + xrel > x_max) { - mouse->x = x_max; + /* while using the relative mode and many windows, we have to be + sure that the pointers find themselves inside the windows */ + if (mouse->x + xrel > mouse->x_max) { + mouse->x = mouse->x_max; } else if (mouse->x + xrel < 0) { mouse->x = 0; } else { mouse->x += xrel; } - if (mouse->y + yrel > y_max) { - mouse->y = y_max; + if (mouse->y + yrel > mouse->y_max) { + mouse->y = mouse->y_max; } else if (mouse->y + yrel < 0) { mouse->y = 0; } else { @@ -779,13 +786,6 @@ } void -SDL_UpdateCoordinates(int x, int y) -{ - x_max = x; - y_max = y; -} - -void SDL_ChangeEnd(int id, int end) { int index = SDL_GetMouseIndexId(id);