From 63f00dae6b9142c2570aaf30b58932153e796567 Mon Sep 17 00:00:00 2001 From: ocornut Date: Wed, 30 Jul 2025 18:42:49 +0900 Subject: [PATCH] Windows, Viewports: clear ImGuiViewportFlags_NoInputs consistently with how it is set. --- imgui.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/imgui.cpp b/imgui.cpp index 02b60e814..3102c3958 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -5229,7 +5229,9 @@ void ImGui::StopMouseMovingWindow() g.MouseViewport = window->Viewport; // Clear the NoInputs window flag set by the Viewport system in AddUpdateViewport() - window->Viewport->Flags &= ~ImGuiViewportFlags_NoInputs; + const bool window_can_use_inputs = ((window->Flags & ImGuiWindowFlags_NoMouseInputs) && (window->Flags & ImGuiWindowFlags_NoNavInputs)) == false; + if (window_can_use_inputs) + window->Viewport->Flags &= ~ImGuiViewportFlags_NoInputs; } g.MovingWindow = NULL; @@ -16588,9 +16590,10 @@ ImGuiViewportP* ImGui::AddUpdateViewport(ImGuiWindow* window, ImGuiID id, const flags |= ImGuiViewportFlags_IsPlatformWindow; if (window != NULL) { + const bool window_can_use_inputs = ((window->Flags & ImGuiWindowFlags_NoMouseInputs) && (window->Flags & ImGuiWindowFlags_NoNavInputs)) == false; if (g.MovingWindow && g.MovingWindow->RootWindowDockTree == window) flags |= ImGuiViewportFlags_NoInputs | ImGuiViewportFlags_NoFocusOnAppearing; - if ((window->Flags & ImGuiWindowFlags_NoMouseInputs) && (window->Flags & ImGuiWindowFlags_NoNavInputs)) + if (!window_can_use_inputs) flags |= ImGuiViewportFlags_NoInputs; if (window->Flags & ImGuiWindowFlags_NoFocusOnAppearing) flags |= ImGuiViewportFlags_NoFocusOnAppearing;