Bladeren bron

Popup taking focus deactivate focused widget of other window (#126)

e.g. focus InputText(), open contextual popup, input text used to stay
focused
ocornut 10 jaren geleden
bovenliggende
commit
b0a9bbf6f6
1 gewijzigde bestanden met toevoegingen van 6 en 1 verwijderingen
  1. 6 1
      imgui.cpp

+ 6 - 1
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;