diff options
author | Juan Linietsky <reduzio@gmail.com> | 2020-07-02 22:08:06 -0300 |
---|---|---|
committer | Juan Linietsky <reduzio@gmail.com> | 2020-07-02 22:09:17 -0300 |
commit | b14be5f2715028d82afa6df255118b41cbabc78f (patch) | |
tree | a325cad4b4294b5e875ee909d55643fe0b3208ee | |
parent | 670d3a616cc961a6cb7886e65409744013c2fe1d (diff) |
Fix fullscreen flag on Windows, closes #37588
-rw-r--r-- | platform/windows/display_server_windows.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp index 61dc156fbc..790277ca3a 100644 --- a/platform/windows/display_server_windows.cpp +++ b/platform/windows/display_server_windows.cpp @@ -2864,6 +2864,27 @@ DisplayServer::WindowID DisplayServerWindows::_create_window(WindowMode p_mode, WindowRect.top = p_rect.position.y; WindowRect.bottom = p_rect.position.y + p_rect.size.y; + if (p_mode == WINDOW_MODE_FULLSCREEN) { + int nearest_area = 0; + Rect2i screen_rect; + for (int i = 0; i < get_screen_count(); i++) { + Rect2i r; + r.position = screen_get_position(i); + r.size = screen_get_size(i); + Rect2 inters = r.clip(p_rect); + int area = inters.size.width * inters.size.height; + if (area >= nearest_area) { + screen_rect = r; + nearest_area = area; + } + } + + WindowRect.left = screen_rect.position.x; + WindowRect.right = screen_rect.position.x + screen_rect.size.x; + WindowRect.top = screen_rect.position.y; + WindowRect.bottom = screen_rect.position.y + screen_rect.size.y; + } + AdjustWindowRectEx(&WindowRect, dwStyle, FALSE, dwExStyle); WindowID id = window_id_counter; |