From b144c79da27fda0c8f88532bb5c33a848708107b Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
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 823f214771c60..aaa1d5076a935 100644
--- a/src/video/uikit/SDL_uikitvideo.m
+++ b/src/video/uikit/SDL_uikitvideo.m
@@ -87,6 +87,7 @@ static void UIKit_DeleteDevice(SDL_VideoDevice *device)
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 da1fb6395d30d..4ef4dfd86fa00 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 c1aa41e5d977f..6e880b344d324 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 {