@ -20,7 +20,7 @@
// CHANGELOG
// (minor and older changes stripped away, please see git history for details)
// 2023-12-18: Emscripten: Change the size of the GLFW window according to the size of the canvas
// 2023-12-19: Emscripten: Added ImGui_ImplGlfw_InstallEmscriptenCanvasResizeCallback() to register canvas selector and auto-resize GLFW window.
// 2023-10-05: Inputs: Added support for extra ImGuiKey values: F13 to F24 function keys.
// 2023-07-18: Inputs: Revert ignoring mouse data on GLFW_CURSOR_DISABLED as it can be used differently. User may set ImGuiConfigFLags_NoMouse if desired. (#5625, #6609)
// 2023-06-12: Accept glfwGetTime() not returning a monotonically increasing value. This seems to happens on some Windows setup when peripherals disconnect, and is likely to also happen on browser + Emscripten. (#6491)
@ -814,40 +814,33 @@ void ImGui_ImplGlfw_NewFrame()
# ifdef __EMSCRIPTEN__
static EM_BOOL ImGui_ImplGlfw_OnCanvasSizeChange ( int event_type , const EmscriptenUiEvent * event , void * user_data )
{
ImGui_ImplGlfw_Data * bd = ( ImGui_ImplGlfw_Data * ) user_data ;
ImGui_ImplGlfw_Data * bd = ( ImGui_ImplGlfw_Data * ) user_data ;
double canvas_width , canvas_height ;
emscripten_get_element_css_size ( bd - > CanvasSelector , & canvas_width , & canvas_height ) ;
glfwSetWindowSize ( bd - > Window , ( int ) canvas_width , ( int ) canvas_height ) ;
return true ;
}
static EM_BOOL ImGui_ImplGlfw_OnFullscreenChange ( int event_type , const EmscriptenFullscreenChangeEvent * event , void * user_data )
static EM_BOOL ImGui_ImplEmscripten_FullscreenChangeCallback ( int event_type , const EmscriptenFullscreenChangeEvent * event , void * user_data )
{
ImGui_ImplGlfw_Data * bd = ( ImGui_ImplGlfw_Data * ) user_data ;
ImGui_ImplGlfw_Data * bd = ( ImGui_ImplGlfw_Data * ) user_data ;
double canvas_width , canvas_height ;
emscripten_get_element_css_size ( bd - > CanvasSelector , & canvas_width , & canvas_height ) ;
glfwSetWindowSize ( bd - > Window , ( int ) canvas_width , ( int ) canvas_height ) ;
return true ;
}
/**
* @ param canvas_selector A CSS selector , the event listener is applied to the first element that matches the query .
*/
void ImGui_ImplGlfw_SetEmscriptenCanvasSelector ( const char * canvas_selector )
// 'canvas_selector' is a CSS selector. The event listener is applied to the first element that matches the query.
// STRING MUST PERSIST FOR THE APPLICATION DURATION. PLEASE USE A STRING LITERAL OR ENSURE POINTER WILL STAY VALID.
void ImGui_ImplGlfw_InstallEmscriptenCanvasResizeCallback ( const char * canvas_selector )
{
IM_ASSERT ( canvas_selector ! = nullptr ) ;
ImGui_ImplGlfw_Data * bd = ImGui_ImplGlfw_GetBackendData ( ) ;
IM_ASSERT ( bd ! = nullptr & & " Did you call ImGui_ImplGlfw_InitForXXX()? " ) ;
bd - > CanvasSelector = canvas_selector ;
bd - > CanvasSelector = canvas_selector ;
emscripten_set_resize_callback ( EMSCRIPTEN_EVENT_TARGET_WINDOW , bd , false , ImGui_ImplGlfw_OnCanvasSizeChange ) ;
emscripten_set_fullscreenchange_callback ( EMSCRIPTEN_EVENT_TARGET_DOCUMENT , bd , false , ImGui_ImplGlfw_OnFullscreenChange ) ;
emscripten_set_fullscreenchange_callback ( EMSCRIPTEN_EVENT_TARGET_DOCUMENT , bd , false , ImGui_ImplEmscripten_FullscreenChangeCallback ) ;
// Change the size of the GLFW window according to the size of the canvas
ImGui_ImplGlfw_OnCanvasSizeChange ( EMSCRIPTEN_EVENT_RESIZE , { } , bd ) ;