# HG changeset patch # User Sam Lantinga # Date 1228686808 0 # Node ID 523b10db69f842ace75e79d228efde4517a00fed # Parent 8a3aa505ecba6b9135bb87c8d12da8c249fd0d33 There's no reason to add extra code to notify the mice of window size changes. Just query the window size when we care about it. :) diff -r 8a3aa505ecba -r 523b10db69f8 src/events/SDL_mouse.c --- a/src/events/SDL_mouse.c Sun Dec 07 07:16:40 2008 +0000 +++ b/src/events/SDL_mouse.c Sun Dec 07 21:53:28 2008 +0000 @@ -364,21 +364,6 @@ 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; - } } } @@ -458,15 +443,19 @@ } else { /* 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; + int x_max, y_max; + + SDL_GetWindowSize(mouse->focus, &x_max, &y_max); + + if (mouse->x + xrel > x_max) { + mouse->x = x_max; } else if (mouse->x + xrel < 0) { mouse->x = 0; } else { mouse->x += xrel; } - if (mouse->y + yrel > mouse->y_max) { - mouse->y = mouse->y_max; + if (mouse->y + yrel > y_max) { + mouse->y = y_max; } else if (mouse->y + yrel < 0) { mouse->y = 0; } else { diff -r 8a3aa505ecba -r 523b10db69f8 src/events/SDL_mouse_c.h --- a/src/events/SDL_mouse_c.h Sun Dec 07 07:16:40 2008 +0000 +++ b/src/events/SDL_mouse_c.h Sun Dec 07 21:53:28 2008 +0000 @@ -66,8 +66,8 @@ /* Data common to all mice */ SDL_WindowID focus; int which; - int x, x_max; - int y, y_max; + int x; + int y; int z; /* for future use */ int xdelta; int ydelta; @@ -112,9 +112,6 @@ /* Set the mouse focus window */ extern void SDL_SetMouseFocus(int id, SDL_WindowID windowID); -/* Set the size of the mouse focus window */ -extern void SDL_SetMouseFocusSize(SDL_WindowID windowID, int w, int h); - /* Send a mouse motion event for a mouse */ extern int SDL_SendMouseMotion(int id, int relative, int x, int y, int z); diff -r 8a3aa505ecba -r 523b10db69f8 src/events/SDL_windowevents.c --- a/src/events/SDL_windowevents.c Sun Dec 07 07:16:40 2008 +0000 +++ b/src/events/SDL_windowevents.c Sun Dec 07 21:53:28 2008 +0000 @@ -74,7 +74,6 @@ window->w = data1; window->h = data2; SDL_OnWindowResized(window); - SDL_SetMouseFocusSize(windowID, window->w, window->h); break; case SDL_WINDOWEVENT_MINIMIZED: if (window->flags & SDL_WINDOW_MINIMIZED) { diff -r 8a3aa505ecba -r 523b10db69f8 src/video/SDL_video.c --- a/src/video/SDL_video.c Sun Dec 07 07:16:40 2008 +0000 +++ b/src/video/SDL_video.c Sun Dec 07 21:53:28 2008 +0000 @@ -1046,6 +1046,7 @@ if (_this->SetWindowSize) { _this->SetWindowSize(_this, window); } + SDL_OnWindowResized(window); } void @@ -1054,13 +1055,19 @@ SDL_Window *window = SDL_GetWindowFromID(windowID); if (!window) { - return; - } - if (w) { - *w = window->w; - } - if (h) { - *h = window->h; + if (w) { + *w = window->w; + } + if (h) { + *h = window->h; + } + } else { + if (w) { + *w = 0; + } + if (h) { + *h = 0; + } } }