瀏覽代碼

Add a current monitor function for window mode windows. (#1492)

Jeffery Myers 4 年之前
父節點
當前提交
4c8bebc0d7
共有 1 個文件被更改,包括 33 次插入4 次删除
  1. 33 4
      src/core.c

+ 33 - 4
src/core.c

@@ -1458,12 +1458,41 @@ int GetCurrentMonitor(void)
 #if defined(PLATFORM_DESKTOP)
     int monitorCount;
     GLFWmonitor** monitors = glfwGetMonitors(&monitorCount);
+    GLFWmonitor* monitor = NULL;
 
-    GLFWmonitor* monitor = glfwGetWindowMonitor(CORE.Window.handle);
-    for (int i = 0; i < monitorCount; i++)
+    if (monitorCount == 1) // easy out
+        return 0;
+
+    if (IsWindowFullscreen())
+    {
+        monitor = glfwGetWindowMonitor(CORE.Window.handle);
+        for (int i = 0; i < monitorCount; i++)
+        {
+            if (monitors[i] == monitor)
+                return i;
+        }
+        return 0;
+    }
+    else
     {
-        if (monitors[i] == monitor)
-            return i;
+        int x = 0;
+        int y = 0;
+
+        glfwGetWindowPos(CORE.Window.handle, &x, &y);
+        
+        for (int i = 0; i < monitorCount; i++)
+        {
+            int mx = 0;
+            int my = 0;
+
+            int width = 0;
+            int height = 0;
+
+            monitor = monitors[i];
+            glfwGetMonitorWorkarea(monitor, &mx, &my, &width, &height);
+            if (x >= mx && x <= (mx + width) && y >= my && y <= (my + height))
+                return i;
+        }
     }
     return 0;
 #else