Skip to content
This repository has been archived by the owner on Feb 11, 2021. It is now read-only.

Commit

Permalink
Browse files Browse the repository at this point in the history
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. :)
  • Loading branch information
slouken committed Dec 7, 2008
1 parent 1973ebc commit e9f68de
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 32 deletions.
27 changes: 8 additions & 19 deletions src/events/SDL_mouse.c
Expand Up @@ -364,21 +364,6 @@ SDL_SetMouseFocus(int id, SDL_WindowID windowID)
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;
}
}
}

Expand Down Expand Up @@ -458,15 +443,19 @@ SDL_SendMouseMotion(int id, int relative, int x, int y, int pressure)
} 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 {
Expand Down
7 changes: 2 additions & 5 deletions src/events/SDL_mouse_c.h
Expand Up @@ -66,8 +66,8 @@ struct SDL_Mouse
/* 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;
Expand Down Expand Up @@ -112,9 +112,6 @@ extern void SDL_ResetMouse(int index);
/* 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);

Expand Down
1 change: 0 additions & 1 deletion src/events/SDL_windowevents.c
Expand Up @@ -74,7 +74,6 @@ SDL_SendWindowEvent(SDL_WindowID windowID, Uint8 windowevent, int data1,
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) {
Expand Down
21 changes: 14 additions & 7 deletions src/video/SDL_video.c
Expand Up @@ -1046,6 +1046,7 @@ SDL_SetWindowSize(SDL_WindowID windowID, int w, int h)
if (_this->SetWindowSize) {
_this->SetWindowSize(_this, window);
}
SDL_OnWindowResized(window);
}

void
Expand All @@ -1054,13 +1055,19 @@ SDL_GetWindowSize(SDL_WindowID windowID, int *w, int *h)
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;
}
}
}

Expand Down

0 comments on commit e9f68de

Please sign in to comment.