From 4c7459eda8f199d0c58b1d89079aeaaaec71e43f Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Fri, 31 May 2024 15:29:19 -0700 Subject: [PATCH] SDL_cocoawindow: Fix setting parent-relative coordinates for child windows in Cocoa_SetWindowSize --- src/video/cocoa/SDL_cocoawindow.m | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/video/cocoa/SDL_cocoawindow.m b/src/video/cocoa/SDL_cocoawindow.m index 005f75ed74..0f70ff85ff 100644 --- a/src/video/cocoa/SDL_cocoawindow.m +++ b/src/video/cocoa/SDL_cocoawindow.m @@ -2313,14 +2313,16 @@ void Cocoa_SetWindowSize(SDL_VideoDevice *_this, SDL_Window *window) /* isZoomed always returns true if the window is not resizable */ if (!(window->flags & SDL_WINDOW_RESIZABLE) || !Cocoa_IsZoomed(window)) { if (!(window->flags & SDL_WINDOW_FULLSCREEN)) { - NSRect rect = [nswindow contentRectForFrameRect:[nswindow frame]]; + int x, y; + NSRect rect = [nswindow contentRectForFrameRect:[nswindow frame]]; /* Cocoa will resize the window from the bottom-left rather than the * top-left when -[nswindow setContentSize:] is used, so we must set the * entire frame based on the new size, in order to preserve the position. */ - rect.origin.x = window->floating.x; - rect.origin.y = window->floating.y; + SDL_RelativeToGlobalForWindow(window, window->floating.x, window->floating.y, &x, &y); + rect.origin.x = x; + rect.origin.y = y; rect.size.width = window->floating.w; rect.size.height = window->floating.h; ConvertNSRect(&rect);