summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2023-02-03 06:23:01 +0100
committerRémi Verschelde <rverschelde@gmail.com>2023-02-03 06:23:01 +0100
commit5fb94e01cacfc1062d9b9599eb9cc1b3e7fd5e70 (patch)
treeff9da7dac51fc573dbbb54b21437afe38f51f16a
parenta16b0fec4093b22ef5f14c1a4eb9363c890ab06d (diff)
parent6165498d0e125636cf39d2ea00f44689e2da31b6 (diff)
Merge pull request #72622 from Sauermann/fix-fullscreen-window-init-size
Fix windowsize for fullscreen windows on windowcreation on Windows
-rw-r--r--platform/windows/display_server_windows.cpp17
1 files changed, 13 insertions, 4 deletions
diff --git a/platform/windows/display_server_windows.cpp b/platform/windows/display_server_windows.cpp
index 777d05584c..f083cc202f 100644
--- a/platform/windows/display_server_windows.cpp
+++ b/platform/windows/display_server_windows.cpp
@@ -3959,10 +3959,19 @@ DisplayServer::WindowID DisplayServerWindows::_create_window(WindowMode p_mode,
wd.im_position = Vector2();
- // FIXME this is wrong in cases where the window coordinates were changed due to full screen mode; use WindowRect
- wd.last_pos = p_rect.position;
- wd.width = p_rect.size.width;
- wd.height = p_rect.size.height;
+ if (p_mode == WINDOW_MODE_FULLSCREEN || p_mode == WINDOW_MODE_EXCLUSIVE_FULLSCREEN || p_mode == WINDOW_MODE_MAXIMIZED) {
+ RECT r;
+ GetClientRect(wd.hWnd, &r);
+ ClientToScreen(wd.hWnd, (POINT *)&r.left);
+ ClientToScreen(wd.hWnd, (POINT *)&r.right);
+ wd.last_pos = Point2i(r.left, r.top) - _get_screens_origin();
+ wd.width = r.right - r.left;
+ wd.height = r.bottom - r.top;
+ } else {
+ wd.last_pos = p_rect.position;
+ wd.width = p_rect.size.width;
+ wd.height = p_rect.size.height;
+ }
window_id_counter++;
}