Implement FLAG_WINDOW_RESIZABLE for web (#3305)

Fixes #3231
This commit is contained in:
Peter0x44 2023-09-11 17:03:33 +00:00 committed by GitHub
parent e75f85ce58
commit 9d230d753b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -914,9 +914,9 @@ void InitWindow(int width, int height, const char *title)
// Check fullscreen change events(note this is done on the window since most browsers don't support this on #canvas) // Check fullscreen change events(note this is done on the window since most browsers don't support this on #canvas)
//emscripten_set_fullscreenchange_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 1, EmscriptenResizeCallback); //emscripten_set_fullscreenchange_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 1, EmscriptenResizeCallback);
// Check Resize event (note this is done on the window since most browsers don't support this on #canvas) // Check Resize event (note this is done on the window since most browsers don't support this on #canvas)
//emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 1, EmscriptenResizeCallback); emscripten_set_resize_callback(EMSCRIPTEN_EVENT_TARGET_WINDOW, NULL, 1, EmscriptenResizeCallback);
// Trigger this once to get initial window sizing // Trigger this once to get initial window sizing
//EmscriptenResizeCallback(EMSCRIPTEN_EVENT_RESIZE, NULL, NULL); EmscriptenResizeCallback(EMSCRIPTEN_EVENT_RESIZE, NULL, NULL);
// Support keyboard events -> Not used, GLFW.JS takes care of that // Support keyboard events -> Not used, GLFW.JS takes care of that
//emscripten_set_keypress_callback("#canvas", NULL, 1, EmscriptenKeyboardCallback); //emscripten_set_keypress_callback("#canvas", NULL, 1, EmscriptenKeyboardCallback);
@ -6165,8 +6165,8 @@ static EM_BOOL EmscriptenWindowResizedCallback(int eventType, const EmscriptenUi
return 1; // The event was consumed by the callback handler return 1; // The event was consumed by the callback handler
} }
EM_JS(int, GetCanvasWidth, (), { return canvas.clientWidth; }); EM_JS(int, GetWindowInnerWidth, (), { return window.innerWidth; });
EM_JS(int, GetCanvasHeight, (), { return canvas.clientHeight; }); EM_JS(int, GetWindowInnerHeight, (), { return window.innerHeight; });
// Register DOM element resize event // Register DOM element resize event
static EM_BOOL EmscriptenResizeCallback(int eventType, const EmscriptenUiEvent *event, void *userData) static EM_BOOL EmscriptenResizeCallback(int eventType, const EmscriptenUiEvent *event, void *userData)
@ -6176,8 +6176,8 @@ static EM_BOOL EmscriptenResizeCallback(int eventType, const EmscriptenUiEvent *
// This event is called whenever the window changes sizes, // This event is called whenever the window changes sizes,
// so the size of the canvas object is explicitly retrieved below // so the size of the canvas object is explicitly retrieved below
int width = GetCanvasWidth(); int width = GetWindowInnerWidth();
int height = GetCanvasHeight(); int height = GetWindowInnerHeight();
emscripten_set_canvas_element_size("#canvas",width,height); emscripten_set_canvas_element_size("#canvas",width,height);
SetupViewport(width, height); // Reset viewport and projection matrix for new size SetupViewport(width, height); // Reset viewport and projection matrix for new size