REVIEWED: GetCurrentMonitor() #3472

This commit is contained in:
Ray 2023-10-29 16:36:46 +01:00
parent 01c264123d
commit b4865588f8

View file

@ -751,6 +751,11 @@ int GetCurrentMonitor(void)
} }
else else
{ {
// In case the window is between two monitors, we use below logic
// to try to detect the "current monitor" for that window, note that
// this is probably an overengineered solution for a very side case
// trying to match SDL behaviour
int closestDist = 0x7FFFFFFF; int closestDist = 0x7FFFFFFF;
// Window center position // Window center position
@ -758,8 +763,8 @@ int GetCurrentMonitor(void)
int wcy = 0; int wcy = 0;
glfwGetWindowPos(platform.handle, &wcx, &wcy); glfwGetWindowPos(platform.handle, &wcx, &wcy);
wcx += (int)CORE.Window.screen.width / 2; wcx += (int)CORE.Window.screen.width/2;
wcy += (int)CORE.Window.screen.height / 2; wcy += (int)CORE.Window.screen.height/2;
for (int i = 0; i < monitorCount; i++) for (int i = 0; i < monitorCount; i++)
{ {
@ -786,28 +791,16 @@ int GetCurrentMonitor(void)
} }
int xclosest = wcx; int xclosest = wcx;
if (wcx < mx) if (wcx < mx) xclosest = mx;
{ else if (wcx > right) xclosest = right;
xclosest = mx;
}
else if (wcx > right)
{
xclosest = right;
}
int yclosest = wcy; int yclosest = wcy;
if (wcy < my) if (wcy < my) yclosest = my;
{ else if (wcy > bottom) yclosest = bottom;
yclosest = my;
}
else if (wcy > bottom)
{
yclosest = bottom;
}
int dx = wcx - xclosest; int dx = wcx - xclosest;
int dy = wcy - yclosest; int dy = wcy - yclosest;
int dist = (dx * dx) + (dy * dy); int dist = (dx*dx) + (dy*dy);
if (dist < closestDist) if (dist < closestDist)
{ {
index = i; index = i;