2
0
Эх сурвалжийг харах

Clicking on a widget in a child window focus the parent window (#147)

However SetWindowFocus() called on a child window prior to calling
Begin() on said child won;'t work yet.
ocornut 10 жил өмнө
parent
commit
9b6fa29022
1 өөрчлөгдсөн 7 нэмэгдсэн , 1 устгасан
  1. 7 1
      imgui.cpp

+ 7 - 1
imgui.cpp

@@ -2774,7 +2774,7 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size, float bg
         window->IDStack.resize(0);
         ImGui::PushID(window);
 
-        // Move window (at the beginning of the frame to avoid input lag or sheering)
+        // Move window (at the beginning of the frame to avoid input lag or sheering). Only valid for root windows.
         const ImGuiID move_id = window->GetID("#MOVE");
         RegisterAliveId(move_id);
         if (g.ActiveId == move_id)
@@ -3127,6 +3127,12 @@ void ImGui::End()
 static void FocusWindow(ImGuiWindow* window)
 {
     ImGuiState& g = *GImGui;
+
+    // Always focus the root window
+    // FIXME: RootWindow is set as we do Begin() on the window, so this won't work if called SetWindowFocus(const char* name) on a child window prior to window calling Begin(). Bit of an edge.
+    if (window->RootWindow)
+        window = window->RootWindow;
+
     g.FocusedWindow = window;
 
     if (g.Windows.back() == window)