Forráskód Böngészése

Add Emscripten window data to window properties

Temdog007 2 hete
szülő
commit
cbc26fe2c4
2 módosított fájl, 11 hozzáadás és 0 törlés
  1. 7 0
      include/SDL3/SDL_video.h
  2. 4 0
      src/video/emscripten/SDL_emscriptenvideo.c

+ 7 - 0
include/SDL3/SDL_video.h

@@ -1542,6 +1542,11 @@ extern SDL_DECLSPEC SDL_Window * SDLCALL SDL_GetWindowParent(SDL_Window *window)
  * - `SDL_PROP_WINDOW_X11_WINDOW_NUMBER`: the X11 Window associated with the
  *   window
  *
+ * On Emscripten:
+ * - `SDL_PROP_WINDOW_EMSCRIPTEN_CANVAS_ID`: the id the canvas element will have
+ * - `SDL_PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT`: the keyboard element that associates
+ *   keyboard events to this window
+ *
  * \param window the window to query.
  * \returns a valid property ID on success or 0 on failure; call
  *          SDL_GetError() for more information.
@@ -1587,6 +1592,8 @@ extern SDL_DECLSPEC SDL_PropertiesID SDLCALL SDL_GetWindowProperties(SDL_Window
 #define SDL_PROP_WINDOW_X11_DISPLAY_POINTER                         "SDL.window.x11.display"
 #define SDL_PROP_WINDOW_X11_SCREEN_NUMBER                           "SDL.window.x11.screen"
 #define SDL_PROP_WINDOW_X11_WINDOW_NUMBER                           "SDL.window.x11.window"
+#define SDL_PROP_WINDOW_EMSCRIPTEN_CANVAS_ID                        "SDL.window.emscripten.canvas_id"
+#define SDL_PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT                 "SDL.window.emscripten.keyboard_element"
 
 /**
  * Get the window flags.

+ 4 - 0
src/video/emscripten/SDL_emscriptenvideo.c

@@ -525,6 +525,10 @@ static bool Emscripten_CreateWindow(SDL_VideoDevice *_this, SDL_Window *window,
         };
     }, window);
 
+    // Ensure canvas_id and keyboard_element are added to the window's properties
+    SDL_SetStringProperty(window->props, SDL_PROP_WINDOW_EMSCRIPTEN_CANVAS_ID, wdata->canvas_id);
+    SDL_SetStringProperty(window->props, SDL_PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT, wdata->keyboard_element);
+
     // Window has been successfully created
     return true;
 }