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

Minor optimization so that mass-calling BeginPopupContext* functions can early out more commonly without hashing ID

ocornut 9 жил өмнө
parent
commit
749e8fa345
1 өөрчлөгдсөн 7 нэмэгдсэн , 1 устгасан
  1. 7 1
      imgui.cpp

+ 7 - 1
imgui.cpp

@@ -3208,7 +3208,8 @@ void ImGui::CloseCurrentPopup()
 static inline void ClearSetNextWindowData()
 {
     ImGuiState& g = *GImGui;
-    g.SetNextWindowPosCond = g.SetNextWindowSizeCond = g.SetNextWindowContentSizeCond = g.SetNextWindowCollapsedCond = g.SetNextWindowFocus = 0;
+    g.SetNextWindowPosCond = g.SetNextWindowSizeCond = g.SetNextWindowContentSizeCond = g.SetNextWindowCollapsedCond = 0;
+    g.SetNextWindowFocus = false;
 }
 
 static bool BeginPopupEx(const char* str_id, ImGuiWindowFlags extra_flags)
@@ -3243,6 +3244,11 @@ static bool BeginPopupEx(const char* str_id, ImGuiWindowFlags extra_flags)
 
 bool ImGui::BeginPopup(const char* str_id)
 {
+    if (GImGui->OpenedPopupStack.Size <= GImGui->CurrentPopupStack.Size)	// Early out for performance
+    {
+        ClearSetNextWindowData(); // We behave like Begin() and need to consume those values
+        return false;
+    }
     return BeginPopupEx(str_id, ImGuiWindowFlags_ShowBorders);
 }