Pārlūkot izejas kodu

Fix SDL_GetWindowPosition to be properly monitor-aware and return the monitor x,y when fullscreened.

Alfred Reynolds 9 gadi atpakaļ
vecāks
revīzija
e09d95c36a
1 mainītis faili ar 19 papildinājumiem un 0 dzēšanām
  1. 19 0
      src/video/SDL_video.c

+ 19 - 0
src/video/SDL_video.c

@@ -1679,12 +1679,31 @@ SDL_GetWindowPosition(SDL_Window * window, int *x, int *y)
 
     /* Fullscreen windows are always at their display's origin */
     if (window->flags & SDL_WINDOW_FULLSCREEN) {
+        int displayIndex;
+        
         if (x) {
             *x = 0;
         }
         if (y) {
             *y = 0;
         }
+
+        /* Find the window's monitor and update to the
+           monitor offset. */
+        displayIndex = SDL_GetWindowDisplayIndex(window);
+        if (displayIndex >= 0) {
+            SDL_Rect bounds;
+
+            SDL_zero(bounds);
+
+            SDL_GetDisplayBounds(displayIndex, &bounds);
+            if (x) {
+                *x = bounds.x;
+            }
+            if (y) {
+                *y = bounds.y;
+            }
+        }
     } else {
         if (x) {
             *x = window->x;