diff --git a/backends/imgui_impl_osx.mm b/backends/imgui_impl_osx.mm index 2c82bd615..6fb28bd64 100644 --- a/backends/imgui_impl_osx.mm +++ b/backends/imgui_impl_osx.mm @@ -699,10 +699,15 @@ static ImGuiMouseSource GetMouseSource(NSEvent* event) static bool ImGui_ImplOSX_HandleEvent(NSEvent* event, NSView* view) { // Only process events from the window containing ImGui view - if (event.window != view.window) + void* event_handle = (__bridge void*)(event.window); + void* view_handle = (__bridge void*)(view.window); + if (event_handle == nullptr || view_handle == nullptr) + return false; + ImGuiViewport* viewport = ImGui::FindViewportByPlatformHandle(view_handle); + if (viewport == nullptr || viewport->PlatformHandleRaw != event_handle) return false; - ImGuiIO& io = ImGui::GetIO(); + ImGuiIO& io = ImGui::GetIO(); if (event.type == NSEventTypeLeftMouseDown || event.type == NSEventTypeRightMouseDown || event.type == NSEventTypeOtherMouseDown) { int button = (int)[event buttonNumber];