20
20
21
21
// CHANGELOG
22
22
// (minor and older changes stripped away, please see git history for details)
23
+ // 2024-07-08: *BREAKING* Renamed ImGui_ImplGlfw_InstallEmscriptenCanvasResizeCallback to ImGui_ImplGlfw_InstallEmscriptenCallbacks(), added GLFWWindow* parameter.
23
24
// 2024-07-02: Emscripten: Added io.PlatformOpenInShellFn() handler for Emscripten versions.
24
25
// 2023-12-19: Emscripten: Added ImGui_ImplGlfw_InstallEmscriptenCanvasResizeCallback() to register canvas selector and auto-resize GLFW window.
25
26
// 2023-10-05: Inputs: Added support for extra ImGuiKey values: F13 to F24 function keys.
@@ -611,12 +612,6 @@ static bool ImGui_ImplGlfw_Init(GLFWwindow* window, bool install_callbacks, Glfw
611
612
// Chain GLFW callbacks: our callbacks will call the user's previously installed callbacks, if any.
612
613
if (install_callbacks)
613
614
ImGui_ImplGlfw_InstallCallbacks (window);
614
- // Register Emscripten Wheel callback to workaround issue in Emscripten GLFW Emulation (#6096)
615
- // We intentionally do not check 'if (install_callbacks)' here, as some users may set it to false and call GLFW callback themselves.
616
- // FIXME: May break chaining in case user registered their own Emscripten callback?
617
- #ifdef __EMSCRIPTEN__
618
- emscripten_set_wheel_callback (EMSCRIPTEN_EVENT_TARGET_DOCUMENT, nullptr , false , ImGui_ImplEmscripten_WheelCallback);
619
- #endif
620
615
621
616
// Set platform dependent data in viewport
622
617
ImGuiViewport* main_viewport = ImGui::GetMainViewport ();
@@ -664,7 +659,8 @@ void ImGui_ImplGlfw_Shutdown()
664
659
if (bd->InstalledCallbacks )
665
660
ImGui_ImplGlfw_RestoreCallbacks (bd->Window );
666
661
#ifdef __EMSCRIPTEN__
667
- emscripten_set_wheel_callback (EMSCRIPTEN_EVENT_TARGET_DOCUMENT, nullptr , false , nullptr );
662
+ if (bd->CanvasSelector )
663
+ emscripten_set_wheel_callback (bd->CanvasSelector , nullptr , false , nullptr );
668
664
#endif
669
665
670
666
for (ImGuiMouseCursor cursor_n = 0 ; cursor_n < ImGuiMouseCursor_COUNT; cursor_n++)
@@ -844,7 +840,7 @@ static EM_BOOL ImGui_ImplEmscripten_FullscreenChangeCallback(int event_type, con
844
840
845
841
// 'canvas_selector' is a CSS selector. The event listener is applied to the first element that matches the query.
846
842
// STRING MUST PERSIST FOR THE APPLICATION DURATION. PLEASE USE A STRING LITERAL OR ENSURE POINTER WILL STAY VALID.
847
- void ImGui_ImplGlfw_InstallEmscriptenCanvasResizeCallback ( const char * canvas_selector)
843
+ void ImGui_ImplGlfw_InstallEmscriptenCallbacks (GLFWwindow*, const char * canvas_selector)
848
844
{
849
845
IM_ASSERT (canvas_selector != nullptr );
850
846
ImGui_ImplGlfw_Data* bd = ImGui_ImplGlfw_GetBackendData ();
@@ -856,6 +852,11 @@ void ImGui_ImplGlfw_InstallEmscriptenCanvasResizeCallback(const char* canvas_sel
856
852
857
853
// Change the size of the GLFW window according to the size of the canvas
858
854
ImGui_ImplGlfw_OnCanvasSizeChange (EMSCRIPTEN_EVENT_RESIZE, {}, bd);
855
+
856
+ // Register Emscripten Wheel callback to workaround issue in Emscripten GLFW Emulation (#6096)
857
+ // We intentionally do not check 'if (install_callbacks)' here, as some users may set it to false and call GLFW callback themselves.
858
+ // FIXME: May break chaining in case user registered their own Emscripten callback?
859
+ emscripten_set_wheel_callback (bd->CanvasSelector , nullptr , false , ImGui_ImplEmscripten_WheelCallback);
859
860
}
860
861
#endif
861
862
0 commit comments