Fix window not initializing on primary monitor on GLFW backend (#3923)
The way the current code worked was by calling `GetCurrentMonitor()`, which would always return the monitor at position (0,0). This isn't the primary monitor on all platforms, on Linux in particular it isn't the case. This isn't the case on the SDL backend, after calling `InitWindow()` the window would always show up on the primary monitor. Even on the GLFW backend, if the full screen flag was set it would attempt to put it on the primary monitor as it would call `glfwGetPrimaryMonitor()` to do it, so for consistency's sake we should do it on windowed mode too.
This commit is contained in:
parent
b00e467494
commit
88f7762921
@ -1518,10 +1518,16 @@ int InitPlatform(void)
|
||||
else
|
||||
{
|
||||
// Try to center window on screen but avoiding window-bar outside of screen
|
||||
int posX = GetMonitorWidth(GetCurrentMonitor())/2 - CORE.Window.screen.width/2;
|
||||
int posY = GetMonitorHeight(GetCurrentMonitor())/2 - CORE.Window.screen.height/2;
|
||||
if (posX < 0) posX = 0;
|
||||
if (posY < 0) posY = 0;
|
||||
int monitorX = 0;
|
||||
int monitorY = 0;
|
||||
int monitorWidth = 0;
|
||||
int monitorHeight = 0;
|
||||
glfwGetMonitorWorkarea(monitor, &monitorX, &monitorY, &monitorWidth, &monitorHeight);
|
||||
|
||||
int posX = monitorX + (monitorWidth - CORE.Window.screen.width)/2;
|
||||
int posY = monitorY + (monitorHeight - CORE.Window.screen.height)/2;
|
||||
if (posX < monitorX) posX = monitorX;
|
||||
if (posY < monitorY) posY = monitorY;
|
||||
SetWindowPosition(posX, posY);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user