From b0a9bbf6f6aaa6ee47d9db0d5290812c3d9efd07 Mon Sep 17 00:00:00 2001 From: ocornut Date: Wed, 27 May 2015 22:58:49 +0100 Subject: [PATCH] Popup taking focus deactivate focused widget of other window (#126) e.g. focus InputText(), open contextual popup, input text used to stay focused --- imgui.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/imgui.cpp b/imgui.cpp index fe182ea2..56242512 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -4015,6 +4015,11 @@ static void FocusWindow(ImGuiWindow* window) if (window->RootWindow) window = window->RootWindow; + // Steal focus on active widgets + if (window->Flags & ImGuiWindowFlags_Popup) // FIXME: This statement should be unnecessary. Need further testing before removing it.. + if (g.ActiveId != 0 && g.ActiveIdWindow && g.ActiveIdWindow->RootWindow != window) + SetActiveId(0); + if (g.Windows.back() == window) return; @@ -6786,11 +6791,11 @@ static bool InputTextFilterCharacter(unsigned int* p_char, ImGuiInputTextFlags f // Edit a string of text bool ImGui::InputText(const char* label, char* buf, size_t buf_size, ImGuiInputTextFlags flags, ImGuiTextEditCallback callback, void* user_data) { - ImGuiState& g = *GImGui; ImGuiWindow* window = GetCurrentWindow(); if (window->SkipItems) return false; + ImGuiState& g = *GImGui; const ImGuiIO& io = g.IO; const ImGuiStyle& style = g.Style;