changeset 2849:523b10db69f8

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. :)
author Sam Lantinga <slouken@libsdl.org>
date Sun, 07 Dec 2008 21:53:28 +0000
parents 8a3aa505ecba
children 43691ef70176
files src/events/SDL_mouse.c src/events/SDL_mouse_c.h src/events/SDL_windowevents.c src/video/SDL_video.c
diffstat 4 files changed, 24 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- 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 {
--- 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);
 
--- 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) {
--- 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;
+        }
     }
 }