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. :) --HG-- extra : convert_revision : svn%3Ac70aab31-4412-0410-b14c-859654838e24/trunk%403310
This commit is contained in:
parent
546fea4e11
commit
3eec2c4dd4
4 changed files with 24 additions and 32 deletions
|
@ -364,21 +364,6 @@ SDL_SetMouseFocus(int id, SDL_WindowID windowID)
|
||||||
if (!focus) {
|
if (!focus) {
|
||||||
SDL_SendWindowEvent(mouse->focus, SDL_WINDOWEVENT_ENTER, 0, 0);
|
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 @@ SDL_SendMouseMotion(int id, int relative, int x, int y, int pressure)
|
||||||
} else {
|
} else {
|
||||||
/* while using the relative mode and many windows, we have to be
|
/* while using the relative mode and many windows, we have to be
|
||||||
sure that the pointers find themselves inside the windows */
|
sure that the pointers find themselves inside the windows */
|
||||||
if (mouse->x + xrel > mouse->x_max) {
|
int x_max, y_max;
|
||||||
mouse->x = mouse->x_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) {
|
} else if (mouse->x + xrel < 0) {
|
||||||
mouse->x = 0;
|
mouse->x = 0;
|
||||||
} else {
|
} else {
|
||||||
mouse->x += xrel;
|
mouse->x += xrel;
|
||||||
}
|
}
|
||||||
if (mouse->y + yrel > mouse->y_max) {
|
if (mouse->y + yrel > y_max) {
|
||||||
mouse->y = mouse->y_max;
|
mouse->y = y_max;
|
||||||
} else if (mouse->y + yrel < 0) {
|
} else if (mouse->y + yrel < 0) {
|
||||||
mouse->y = 0;
|
mouse->y = 0;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -66,8 +66,8 @@ struct SDL_Mouse
|
||||||
/* Data common to all mice */
|
/* Data common to all mice */
|
||||||
SDL_WindowID focus;
|
SDL_WindowID focus;
|
||||||
int which;
|
int which;
|
||||||
int x, x_max;
|
int x;
|
||||||
int y, y_max;
|
int y;
|
||||||
int z; /* for future use */
|
int z; /* for future use */
|
||||||
int xdelta;
|
int xdelta;
|
||||||
int ydelta;
|
int ydelta;
|
||||||
|
@ -112,9 +112,6 @@ extern void SDL_ResetMouse(int index);
|
||||||
/* Set the mouse focus window */
|
/* Set the mouse focus window */
|
||||||
extern void SDL_SetMouseFocus(int id, SDL_WindowID windowID);
|
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 */
|
/* Send a mouse motion event for a mouse */
|
||||||
extern int SDL_SendMouseMotion(int id, int relative, int x, int y, int z);
|
extern int SDL_SendMouseMotion(int id, int relative, int x, int y, int z);
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,6 @@ SDL_SendWindowEvent(SDL_WindowID windowID, Uint8 windowevent, int data1,
|
||||||
window->w = data1;
|
window->w = data1;
|
||||||
window->h = data2;
|
window->h = data2;
|
||||||
SDL_OnWindowResized(window);
|
SDL_OnWindowResized(window);
|
||||||
SDL_SetMouseFocusSize(windowID, window->w, window->h);
|
|
||||||
break;
|
break;
|
||||||
case SDL_WINDOWEVENT_MINIMIZED:
|
case SDL_WINDOWEVENT_MINIMIZED:
|
||||||
if (window->flags & SDL_WINDOW_MINIMIZED) {
|
if (window->flags & SDL_WINDOW_MINIMIZED) {
|
||||||
|
|
|
@ -1046,6 +1046,7 @@ SDL_SetWindowSize(SDL_WindowID windowID, int w, int h)
|
||||||
if (_this->SetWindowSize) {
|
if (_this->SetWindowSize) {
|
||||||
_this->SetWindowSize(_this, window);
|
_this->SetWindowSize(_this, window);
|
||||||
}
|
}
|
||||||
|
SDL_OnWindowResized(window);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1054,13 +1055,19 @@ SDL_GetWindowSize(SDL_WindowID windowID, int *w, int *h)
|
||||||
SDL_Window *window = SDL_GetWindowFromID(windowID);
|
SDL_Window *window = SDL_GetWindowFromID(windowID);
|
||||||
|
|
||||||
if (!window) {
|
if (!window) {
|
||||||
return;
|
if (w) {
|
||||||
}
|
*w = window->w;
|
||||||
if (w) {
|
}
|
||||||
*w = window->w;
|
if (h) {
|
||||||
}
|
*h = window->h;
|
||||||
if (h) {
|
}
|
||||||
*h = window->h;
|
} else {
|
||||||
|
if (w) {
|
||||||
|
*w = 0;
|
||||||
|
}
|
||||||
|
if (h) {
|
||||||
|
*h = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue