From 643281d022214696aee3b6c4bec4d264e28d903a Mon Sep 17 00:00:00 2001
From: Frank Praznik <[EMAIL REDACTED]>
Date: Tue, 31 Dec 2024 17:18:56 -0500
Subject: [PATCH] Revert "win32: Use the size in the WINDOWPOS data while
handling popup windows in the WM_WINDOWPOSCHANGED message"
This reverts commit 4f0a056b953800154ccbf8368f3877687fa29150.
---
src/video/windows/SDL_windowsevents.c | 19 ++++---------------
src/video/windows/SDL_windowswindow.c | 6 +-----
src/video/windows/SDL_windowswindow.h | 2 --
3 files changed, 5 insertions(+), 22 deletions(-)
diff --git a/src/video/windows/SDL_windowsevents.c b/src/video/windows/SDL_windowsevents.c
index ffa3cdbb0f8cd..a63f37e481595 100644
--- a/src/video/windows/SDL_windowsevents.c
+++ b/src/video/windows/SDL_windowsevents.c
@@ -1513,23 +1513,12 @@ LRESULT CALLBACK WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lPara
SDL_SendWindowEvent(data->window, SDL_EVENT_WINDOW_MOVED, x, y);
}
- // GetClientRect() returns the old size for popup windows for some reason.
- if (!SDL_WINDOW_IS_POPUP(data->window)) {
- // Moving the window from one display to another can change the size of the window (in the handling of SDL_EVENT_WINDOW_MOVED), so we need to re-query the bounds
- if (GetClientRect(hwnd, &rect) && !WIN_IsRectEmpty(&rect)) {
- w = rect.right;
- h = rect.bottom;
-
- SDL_SendWindowEvent(data->window, SDL_EVENT_WINDOW_RESIZED, w, h);
- }
- } else {
- // Cache the data, as a resize event will call GetWindowSizeInPixels().
- w = data->last_popup_width = windowpos->cx;
- h = data->last_popup_height = windowpos->cy;
+ // Moving the window from one display to another can change the size of the window (in the handling of SDL_EVENT_WINDOW_MOVED), so we need to re-query the bounds
+ if (GetClientRect(hwnd, &rect) && !WIN_IsRectEmpty(&rect)) {
+ w = rect.right;
+ h = rect.bottom;
- data->use_last_popup_size = true;
SDL_SendWindowEvent(data->window, SDL_EVENT_WINDOW_RESIZED, w, h);
- data->use_last_popup_size = false;
}
WIN_UpdateClipCursor(data->window);
diff --git a/src/video/windows/SDL_windowswindow.c b/src/video/windows/SDL_windowswindow.c
index 2a315f7b36d5e..a5d17c0f3008a 100644
--- a/src/video/windows/SDL_windowswindow.c
+++ b/src/video/windows/SDL_windowswindow.c
@@ -1053,11 +1053,7 @@ void WIN_GetWindowSizeInPixels(SDL_VideoDevice *_this, SDL_Window *window, int *
HWND hwnd = data->hwnd;
RECT rect;
- // GetClientRect() returns the wrong size for popup windows if called while handling WM_WINDOWPOSCHANGED.
- if (data->use_last_popup_size) {
- *w = data->last_popup_width;
- *h = data->last_popup_height;
- } else if (GetClientRect(hwnd, &rect) && !WIN_IsRectEmpty(&rect)) {
+ if (GetClientRect(hwnd, &rect) && !WIN_IsRectEmpty(&rect)) {
*w = rect.right;
*h = rect.bottom;
} else if (window->last_pixel_w && window->last_pixel_h) {
diff --git a/src/video/windows/SDL_windowswindow.h b/src/video/windows/SDL_windowswindow.h
index 07877fa554aac..3a21a1c258726 100644
--- a/src/video/windows/SDL_windowswindow.h
+++ b/src/video/windows/SDL_windowswindow.h
@@ -82,8 +82,6 @@ struct SDL_WindowData
bool windowed_mode_was_maximized;
bool in_window_deactivation;
bool force_resizable;
- bool use_last_popup_size;
- int last_popup_width, last_popup_height;
RECT cursor_clipped_rect; // last successfully committed clipping rect for this window
RECT cursor_ctrlock_rect; // this is Windows-specific, but probably does not need to be per-window
UINT windowed_mode_corner_rounding;