GetCurrentMonitor() - use closest monitor (#3472)
This commit is contained in:
parent
3afd0a55b9
commit
2db7c727b6
@ -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");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user