diff --git a/include/SDL_hints.h b/include/SDL_hints.h index 48f4f3689..6fee3e5fc 100644 --- a/include/SDL_hints.h +++ b/include/SDL_hints.h @@ -366,6 +366,15 @@ extern "C" { */ #define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY" +/** + * \brief Specify the CSS selector used for the "default" window/canvas + * + * This hint only applies to the emscripten platform + * + * The default value is "#canvas" + */ +#define SDL_HINT_EMSCRIPTEN_CANVAS_SELECTOR "SDL_EMSCRIPTEN_CANVAS_SELECTOR" + /** * \brief override the binding element for keyboard inputs for Emscripten builds * diff --git a/src/video/emscripten/SDL_emscriptenvideo.c b/src/video/emscripten/SDL_emscriptenvideo.c index 46813a721..c8efac48f 100644 --- a/src/video/emscripten/SDL_emscriptenvideo.c +++ b/src/video/emscripten/SDL_emscriptenvideo.c @@ -215,6 +215,7 @@ Emscripten_CreateWindow(_THIS, SDL_Window * window) SDL_WindowData *wdata; double scaled_w, scaled_h; double css_w, css_h; + const char *selector; /* Allocate window internal data */ wdata = (SDL_WindowData *) SDL_calloc(1, sizeof(SDL_WindowData)); @@ -222,7 +223,12 @@ Emscripten_CreateWindow(_THIS, SDL_Window * window) return SDL_OutOfMemory(); } - wdata->canvas_id = SDL_strdup("#canvas"); + selector = SDL_GetHint(SDL_HINT_EMSCRIPTEN_CANVAS_SELECTOR); + if (!selector) { + selector = "#canvas"; + } + + wdata->canvas_id = SDL_strdup(selector); if (window->flags & SDL_WINDOW_ALLOW_HIGHDPI) { wdata->pixel_ratio = emscripten_get_device_pixel_ratio();