Переглянути джерело

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.
pull/3927/head
Rafael Bordoni 1 рік тому
committed by GitHub
джерело
коміт
88f7762921
Не вдалося знайти GPG ключ що відповідає даному підпису Ідентифікатор GPG ключа: B5690EEEBB952194
1 змінених файлів з 10 додано та 4 видалено
  1. +10
    -4
      src/platforms/rcore_desktop.c

+ 10
- 4
src/platforms/rcore_desktop.c Переглянути файл

@ -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);
}

Завантаження…
Відмінити
Зберегти