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

features/sdl_renderer3_multiviewports
ocornut ago%!(EXTRA string=10 years)
parent 81c86dd5e7
commit 749e8fa345
  1. 8
      imgui.cpp

@ -3208,7 +3208,8 @@ void ImGui::CloseCurrentPopup()
static inline void ClearSetNextWindowData() static inline void ClearSetNextWindowData()
{ {
ImGuiState& g = *GImGui; 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) 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) 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); return BeginPopupEx(str_id, ImGuiWindowFlags_ShowBorders);
} }

Loading…
Cancel
Save