|
|
@ -751,15 +751,19 @@ int GetCurrentMonitor(void) |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
int x = 0; |
|
|
|
int y = 0; |
|
|
|
int closestDist = 0x7FFFFFFF; |
|
|
|
|
|
|
|
glfwGetWindowPos(platform.handle, &x, &y); |
|
|
|
x += (int)CORE.Window.screen.width / 2; |
|
|
|
y += (int)CORE.Window.screen.height / 2; |
|
|
|
// Window center position |
|
|
|
int wcx = 0; |
|
|
|
int wcy = 0; |
|
|
|
|
|
|
|
glfwGetWindowPos(platform.handle, &wcx, &wcy); |
|
|
|
wcx += (int)CORE.Window.screen.width / 2; |
|
|
|
wcy += (int)CORE.Window.screen.height / 2; |
|
|
|
|
|
|
|
for (int i = 0; i < monitorCount; i++) |
|
|
|
{ |
|
|
|
// Monitor top-left position |
|
|
|
int mx = 0; |
|
|
|
int my = 0; |
|
|
|
|
|
|
@ -769,17 +773,46 @@ int GetCurrentMonitor(void) |
|
|
|
|
|
|
|
if (mode) |
|
|
|
{ |
|
|
|
const int width = mode->width; |
|
|
|
const int height = mode->height; |
|
|
|
const int right = mx + mode->width - 1; |
|
|
|
const int bottom = my + mode->height - 1; |
|
|
|
|
|
|
|
if ((x >= mx) && |
|
|
|
(x < (mx + width)) && |
|
|
|
(y >= my) && |
|
|
|
(y < (my + height))) |
|
|
|
if ((wcx >= mx) && |
|
|
|
(wcx <= right) && |
|
|
|
(wcy >= my) && |
|
|
|
(wcy <= bottom)) |
|
|
|
{ |
|
|
|
index = i; |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
int xclosest = wcx; |
|
|
|
if (wcx < mx) |
|
|
|
{ |
|
|
|
xclosest = mx; |
|
|
|
} |
|
|
|
else if (wcx > right) |
|
|
|
{ |
|
|
|
xclosest = right; |
|
|
|
} |
|
|
|
|
|
|
|
int yclosest = wcy; |
|
|
|
if (wcy < my) |
|
|
|
{ |
|
|
|
yclosest = my; |
|
|
|
} |
|
|
|
else if (wcy > bottom) |
|
|
|
{ |
|
|
|
yclosest = bottom; |
|
|
|
} |
|
|
|
|
|
|
|
int dx = wcx - xclosest; |
|
|
|
int dy = wcy - yclosest; |
|
|
|
int dist = (dx * dx) + (dy * dy); |
|
|
|
if (dist < closestDist) |
|
|
|
{ |
|
|
|
index = i; |
|
|
|
closestDist = dist; |
|
|
|
} |
|
|
|
} |
|
|
|
else TRACELOG(LOG_WARNING, "GLFW: Failed to find video mode for selected monitor"); |
|
|
|
} |
|
|
|