Nav: clear navid in NavInitWindow() when window is marked with ImGuiWindowFlags_NoNavInputs. (#787)

(no expected side-effects, maybe consistency, but those NavLastIds[] values would likely have been 0 already)
This commit is contained in:
ocornut 2021-04-23 14:15:24 +02:00
parent daf97832f1
commit e61e8aea9c

View File

@ -8916,10 +8916,16 @@ void ImGui::NavInitWindow(ImGuiWindow* window, bool force_reinit)
{ {
ImGuiContext& g = *GImGui; ImGuiContext& g = *GImGui;
IM_ASSERT(window == g.NavWindow); IM_ASSERT(window == g.NavWindow);
if (window->Flags & ImGuiWindowFlags_NoNavInputs)
{
g.NavId = g.NavFocusScopeId = 0;
return;
}
bool init_for_nav = false; bool init_for_nav = false;
if (!(window->Flags & ImGuiWindowFlags_NoNavInputs)) if (window == window->RootWindow || (window->Flags & ImGuiWindowFlags_Popup) || (window->NavLastIds[0] == 0) || force_reinit)
if (window == window->RootWindow || (window->Flags & ImGuiWindowFlags_Popup) || (window->NavLastIds[0] == 0) || force_reinit) init_for_nav = true;
init_for_nav = true;
IMGUI_DEBUG_LOG_NAV("[nav] NavInitRequest: from NavInitWindow(), init_for_nav=%d, window=\"%s\", layer=%d\n", init_for_nav, window->Name, g.NavLayer); IMGUI_DEBUG_LOG_NAV("[nav] NavInitRequest: from NavInitWindow(), init_for_nav=%d, window=\"%s\", layer=%d\n", init_for_nav, window->Name, g.NavLayer);
if (init_for_nav) if (init_for_nav)
{ {