From e8e2c8175cfe269cdf94c0c47c70f27f3a033050 Mon Sep 17 00:00:00 2001
From: Sam Lantinga <[EMAIL REDACTED]>
Date: Tue, 14 Mar 2023 11:42:58 -0700
Subject: [PATCH] Popup window parent defaults to the first toplevel window
---
src/video/SDL_video.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index fa3ffe68aca0..45b9bb0529b8 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -1939,12 +1939,28 @@ SDL_Window *SDL_CreateWindow(const char *title, int w, int h, Uint32 flags)
SDL_Window *SDL_CreatePopupWindow(SDL_Window *parent, int offset_x, int offset_y, int w, int h, Uint32 flags)
{
+ if (!_this) {
+ SDL_UninitializedVideo();
+ return NULL;
+ }
+
if (!(_this->quirk_flags & VIDEO_DEVICE_QUIRK_HAS_POPUP_WINDOW_SUPPORT)) {
SDL_Unsupported();
return NULL;
}
/* Parent must be a valid window */
+ if (!parent) {
+ /* Use the first toplevel window by default */
+ for (parent = _this->windows; parent; parent = parent->next) {
+ if (!SDL_WINDOW_IS_POPUP(parent)) {
+ /* Adjust the offset to be relative to this window */
+ offset_x -= parent->x;
+ offset_y -= parent->y;
+ break;
+ }
+ }
+ }
CHECK_WINDOW_MAGIC(parent, NULL);
/* Popups must specify either the tooltip or popup menu window flags */