Просмотр исходного кода

Fixed cursor issue caused by 6890e08b when calling BeginChild/EndChild multiple times to reappend into a same child window. (#2282)

omar 6 лет назад
Родитель
Сommit
b8c6e31c2d
2 измененных файлов с 3 добавлено и 2 удалено
  1. 2 1
      imgui.cpp
  2. 1 1
      imgui_demo.cpp

+ 2 - 1
imgui.cpp

@@ -4276,7 +4276,8 @@ static bool ImGui::BeginChildEx(const char* name, ImGuiID id, const ImVec2& size
 
     // Set the cursor to handle case where the user called SetNextWindowPos()+BeginChild() manually.
     // While this is not really documented/defined, it seems that the expected thing to do.
-    parent_window->DC.CursorPos = child_window->Pos;
+    if (child_window->BeginCount == 1)
+        parent_window->DC.CursorPos = child_window->Pos;
 
     // Process navigation-in immediately so NavInit can run on first frame
     if (g.NavActivateId == id && !(flags & ImGuiWindowFlags_NavFlattened) && (child_window->DC.NavLayerActiveMask != 0 || child_window->DC.NavHasScroll))

+ 1 - 1
imgui_demo.cpp

@@ -1983,7 +1983,7 @@ static void ShowDemoWindowLayout()
         {
             ImGui::BeginChild("scrolling"); // Demonstrate a trick: you can use Begin to set yourself in the context of another window (here we are already out of your child window)
             ImGui::SetScrollX(ImGui::GetScrollX() + scroll_x_delta);
-            ImGui::End();
+            ImGui::EndChild();
         }
         ImGui::TreePop();
     }