SDL: Add SDL_WindowID type for SDL_Window id

From 6863f0b2d89a73c20d685f40c23ecac1fca7d1ec Mon Sep 17 00:00:00 2001
From: Sylvain <[EMAIL REDACTED]>
Date: Wed, 4 Jan 2023 10:27:28 +0100
Subject: [PATCH] Add SDL_WindowID type for SDL_Window id

---
 docs/README-migration.md  |  2 ++
 include/SDL3/SDL_events.h | 22 +++++++++++-----------
 include/SDL3/SDL_video.h  |  7 +++++--
 src/video/SDL_sysvideo.h  |  4 ++--
 src/video/SDL_video.c     |  4 ++--
 5 files changed, 22 insertions(+), 17 deletions(-)

diff --git a/docs/README-migration.md b/docs/README-migration.md
index fdf6711fb81b..063fee328a3e 100644
--- a/docs/README-migration.md
+++ b/docs/README-migration.md
@@ -858,3 +858,5 @@ The following functions have been renamed:
 * SDL_GetPointDisplayIndex() => SDL_GetDisplayIndexForPoint()
 * SDL_GetRectDisplayIndex() => SDL_GetDisplayIndexForRect()
 
+SDL_Window id type is named SDL_WindowID
+
diff --git a/include/SDL3/SDL_events.h b/include/SDL3/SDL_events.h
index 20afd8393092..4f22c614fb88 100644
--- a/include/SDL3/SDL_events.h
+++ b/include/SDL3/SDL_events.h
@@ -230,7 +230,7 @@ typedef struct SDL_WindowEvent
 {
     Uint32 type;        /**< ::SDL_WINDOWEVENT_* */
     Uint64 timestamp;   /**< In nanoseconds, populated using SDL_GetTicksNS() */
-    Uint32 windowID;    /**< The associated window */
+    SDL_WindowID windowID;/**< The associated window */
     Sint32 data1;       /**< event dependent data */
     Sint32 data2;       /**< event dependent data */
 } SDL_WindowEvent;
@@ -242,7 +242,7 @@ typedef struct SDL_KeyboardEvent
 {
     Uint32 type;        /**< ::SDL_KEYDOWN or ::SDL_KEYUP */
     Uint64 timestamp;   /**< In nanoseconds, populated using SDL_GetTicksNS() */
-    Uint32 windowID;    /**< The window with keyboard focus, if any */
+    SDL_WindowID windowID;/**< The window with keyboard focus, if any */
     Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
     Uint8 repeat;       /**< Non-zero if this is a key repeat */
     Uint8 padding2;
@@ -258,7 +258,7 @@ typedef struct SDL_TextEditingEvent
 {
     Uint32 type;                                /**< ::SDL_TEXTEDITING */
     Uint64 timestamp;                           /**< In nanoseconds, populated using SDL_GetTicksNS() */
-    Uint32 windowID;                            /**< The window with keyboard focus, if any */
+    SDL_WindowID windowID;                        /**< The window with keyboard focus, if any */
     char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE];  /**< The editing text */
     Sint32 start;                               /**< The start cursor of selected editing text */
     Sint32 length;                              /**< The length of selected editing text */
@@ -272,7 +272,7 @@ typedef struct SDL_TextEditingExtEvent
 {
     Uint32 type;                                /**< ::SDL_TEXTEDITING_EXT */
     Uint64 timestamp;                           /**< In nanoseconds, populated using SDL_GetTicksNS() */
-    Uint32 windowID;                            /**< The window with keyboard focus, if any */
+    SDL_WindowID windowID;                        /**< The window with keyboard focus, if any */
     char* text;                                 /**< The editing text, which should be freed with SDL_free(), and will not be NULL */
     Sint32 start;                               /**< The start cursor of selected editing text */
     Sint32 length;                              /**< The length of selected editing text */
@@ -286,7 +286,7 @@ typedef struct SDL_TextInputEvent
 {
     Uint32 type;                              /**< ::SDL_TEXTINPUT */
     Uint64 timestamp;                         /**< In nanoseconds, populated using SDL_GetTicksNS() */
-    Uint32 windowID;                          /**< The window with keyboard focus, if any */
+    SDL_WindowID windowID;                      /**< The window with keyboard focus, if any */
     char text[SDL_TEXTINPUTEVENT_TEXT_SIZE];  /**< The input text */
 } SDL_TextInputEvent;
 
@@ -297,7 +297,7 @@ typedef struct SDL_MouseMotionEvent
 {
     Uint32 type;        /**< ::SDL_MOUSEMOTION */
     Uint64 timestamp;   /**< In nanoseconds, populated using SDL_GetTicksNS() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
+    SDL_WindowID windowID;/**< The window with mouse focus, if any */
     SDL_MouseID which;  /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
     Uint32 state;       /**< The current button state */
     float x;            /**< X coordinate, relative to window */
@@ -313,7 +313,7 @@ typedef struct SDL_MouseButtonEvent
 {
     Uint32 type;        /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */
     Uint64 timestamp;   /**< In nanoseconds, populated using SDL_GetTicksNS() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
+    SDL_WindowID windowID;/**< The window with mouse focus, if any */
     SDL_MouseID which;  /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
     Uint8 button;       /**< The mouse button index */
     Uint8 state;        /**< ::SDL_PRESSED or ::SDL_RELEASED */
@@ -330,7 +330,7 @@ typedef struct SDL_MouseWheelEvent
 {
     Uint32 type;        /**< ::SDL_MOUSEWHEEL */
     Uint64 timestamp;   /**< In nanoseconds, populated using SDL_GetTicksNS() */
-    Uint32 windowID;    /**< The window with mouse focus, if any */
+    SDL_WindowID windowID;/**< The window with mouse focus, if any */
     SDL_MouseID which;  /**< The mouse instance id, or SDL_TOUCH_MOUSEID */
     float x;            /**< The amount scrolled horizontally, positive to the right and negative to the left */
     float y;            /**< The amount scrolled vertically, positive away from the user and negative toward the user */
@@ -509,7 +509,7 @@ typedef struct SDL_TouchFingerEvent
     float dx;           /**< Normalized in the range -1...1 */
     float dy;           /**< Normalized in the range -1...1 */
     float pressure;     /**< Normalized in the range 0...1 */
-    Uint32 windowID;    /**< The window underneath the finger, if any */
+    SDL_WindowID windowID;/**< The window underneath the finger, if any */
 } SDL_TouchFingerEvent;
 
 
@@ -523,7 +523,7 @@ typedef struct SDL_DropEvent
     Uint32 type;        /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */
     Uint64 timestamp;   /**< In nanoseconds, populated using SDL_GetTicksNS() */
     char *file;         /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */
-    Uint32 windowID;    /**< The window that was dropped on, if any */
+    SDL_WindowID windowID;/**< The window that was dropped on, if any */
 } SDL_DropEvent;
 
 
@@ -564,7 +564,7 @@ typedef struct SDL_UserEvent
 {
     Uint32 type;        /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */
     Uint64 timestamp;   /**< In nanoseconds, populated using SDL_GetTicksNS() */
-    Uint32 windowID;    /**< The associated window if any */
+    SDL_WindowID windowID;/**< The associated window if any */
     Sint32 code;        /**< User defined event code */
     void *data1;        /**< User defined data pointer */
     void *data2;        /**< User defined data pointer */
diff --git a/include/SDL3/SDL_video.h b/include/SDL3/SDL_video.h
index e7799a8f1cdd..38267e1b64d1 100644
--- a/include/SDL3/SDL_video.h
+++ b/include/SDL3/SDL_video.h
@@ -39,6 +39,9 @@
 extern "C" {
 #endif
 
+
+typedef Uint32 SDL_WindowID;
+
 /**
  *  \brief  The structure that defines a display mode
  *
@@ -743,7 +746,7 @@ extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data);
  *
  * \sa SDL_GetWindowFromID
  */
-extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
+extern DECLSPEC SDL_WindowID SDLCALL SDL_GetWindowID(SDL_Window * window);
 
 /**
  * Get a window from a stored ID.
@@ -759,7 +762,7 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window);
  *
  * \sa SDL_GetWindowID
  */
-extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id);
+extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(SDL_WindowID id);
 
 /**
  * Get the window flags.
diff --git a/src/video/SDL_sysvideo.h b/src/video/SDL_sysvideo.h
index 19e1d9d2d823..5450a669709d 100644
--- a/src/video/SDL_sysvideo.h
+++ b/src/video/SDL_sysvideo.h
@@ -69,7 +69,7 @@ typedef struct SDL_WindowUserData
 struct SDL_Window
 {
     const void *magic;
-    Uint32 id;
+    SDL_WindowID id;
     char *title;
     SDL_Surface *icon;
     int x, y;
@@ -349,7 +349,7 @@ struct SDL_VideoDevice
     SDL_Window *windows;
     SDL_Window *grabbed_window;
     Uint8 window_magic;
-    Uint32 next_object_id;
+    SDL_WindowID next_object_id;
     char *clipboard_text;
     char *primary_selection_text;
     SDL_bool setting_display_mode;
diff --git a/src/video/SDL_video.c b/src/video/SDL_video.c
index eaf139039cc3..3466d2f5ede1 100644
--- a/src/video/SDL_video.c
+++ b/src/video/SDL_video.c
@@ -1990,7 +1990,7 @@ SDL_HasWindows(void)
     return _this && _this->windows != NULL;
 }
 
-Uint32
+SDL_WindowID
 SDL_GetWindowID(SDL_Window *window)
 {
     CHECK_WINDOW_MAGIC(window, 0);
@@ -1999,7 +1999,7 @@ SDL_GetWindowID(SDL_Window *window)
 }
 
 SDL_Window *
-SDL_GetWindowFromID(Uint32 id)
+SDL_GetWindowFromID(SDL_WindowID id)
 {
     SDL_Window *window;