From b144c79da27fda0c8f88532bb5c33a848708107b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Mon, 17 Nov 2025 16:02:25 -0800 Subject: [PATCH] Added support for resizing windows on visionOS --- src/video/uikit/SDL_uikitvideo.m | 1 + src/video/uikit/SDL_uikitwindow.h | 1 + src/video/uikit/SDL_uikitwindow.m | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/src/video/uikit/SDL_uikitvideo.m b/src/video/uikit/SDL_uikitvideo.m index 823f214771..aaa1d5076a 100644 --- a/src/video/uikit/SDL_uikitvideo.m +++ b/src/video/uikit/SDL_uikitvideo.m @@ -87,6 +87,7 @@ static SDL_VideoDevice *UIKit_CreateDevice(void) device->SuspendScreenSaver = UIKit_SuspendScreenSaver; device->CreateSDLWindow = UIKit_CreateWindow; device->SetWindowTitle = UIKit_SetWindowTitle; + device->SetWindowSize = UIKit_SetWindowSize; device->ShowWindow = UIKit_ShowWindow; device->HideWindow = UIKit_HideWindow; device->RaiseWindow = UIKit_RaiseWindow; diff --git a/src/video/uikit/SDL_uikitwindow.h b/src/video/uikit/SDL_uikitwindow.h index da1fb6395d..4ef4dfd86f 100644 --- a/src/video/uikit/SDL_uikitwindow.h +++ b/src/video/uikit/SDL_uikitwindow.h @@ -28,6 +28,7 @@ extern bool UIKit_CreateWindow(SDL_VideoDevice *_this, SDL_Window *window, SDL_PropertiesID create_props); extern void UIKit_SetWindowTitle(SDL_VideoDevice *_this, SDL_Window *window); +extern void UIKit_SetWindowSize(SDL_VideoDevice *_this, SDL_Window *window); extern void UIKit_ShowWindow(SDL_VideoDevice *_this, SDL_Window *window); extern void UIKit_HideWindow(SDL_VideoDevice *_this, SDL_Window *window); extern void UIKit_RaiseWindow(SDL_VideoDevice *_this, SDL_Window *window); diff --git a/src/video/uikit/SDL_uikitwindow.m b/src/video/uikit/SDL_uikitwindow.m index c1aa41e5d9..6e880b344d 100644 --- a/src/video/uikit/SDL_uikitwindow.m +++ b/src/video/uikit/SDL_uikitwindow.m @@ -247,6 +247,24 @@ void UIKit_SetWindowTitle(SDL_VideoDevice *_this, SDL_Window *window) } } +void UIKit_SetWindowSize(SDL_VideoDevice *_this, SDL_Window *window) +{ +#ifdef SDL_PLATFORM_VISIONOS + @autoreleasepool { + SDL_UIKitWindowData *data = (__bridge SDL_UIKitWindowData *)window->internal; + UIWindowScene *scene = data.uiwindow.windowScene; + CGSize size = { window->pending.w, window->pending.h }; + UIWindowSceneGeometryPreferences *preferences = [[UIWindowSceneGeometryPreferencesVision alloc] initWithSize:size]; + [scene requestGeometryUpdateWithPreferences:preferences errorHandler:^(NSError * _Nonnull error) { + // Request failed, no worries + }]; + } + return true; +#else + return SDL_Unsupported(); +#endif +} + void UIKit_ShowWindow(SDL_VideoDevice *_this, SDL_Window *window) { @autoreleasepool {