From d8158f12246388046632cbb2376ff850ce693f6b Mon Sep 17 00:00:00 2001 From: Sven Date: Wed, 8 Oct 2025 11:42:57 +0200 Subject: [PATCH] Added ID overload to BeginPopup --- imgui.cpp | 12 ++++++++++++ imgui.h | 1 + 2 files changed, 13 insertions(+) diff --git a/imgui.cpp b/imgui.cpp index 2ba3aacd9828..dfa243d0c064 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -12270,6 +12270,18 @@ bool ImGui::BeginPopup(const char* str_id, ImGuiWindowFlags flags) return BeginPopupEx(id, flags); } +bool ImGui::BeginPopup(ImGuiID id, ImGuiWindowFlags flags) +{ + ImGuiContext& g = *GImGui; + if (g.OpenPopupStack.Size <= g.BeginPopupStack.Size) // Early out for performance + { + g.NextWindowData.ClearFlags(); // We behave like Begin() and need to consume those values + return false; + } + flags |= ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoSavedSettings; + return BeginPopupEx(id, flags); +} + // If 'p_open' is specified for a modal popup window, the popup will have a regular close button which will close the popup. // Note that popup visibility status is owned by Dear ImGui (and manipulated with e.g. OpenPopup). // - *p_open set back to false in BeginPopupModal() when popup is not open. diff --git a/imgui.h b/imgui.h index 24c6423b4f05..407fb4e40569 100644 --- a/imgui.h +++ b/imgui.h @@ -839,6 +839,7 @@ namespace ImGui // - BeginPopup(): query popup state, if open start appending into the window. Call EndPopup() afterwards if returned true. ImGuiWindowFlags are forwarded to the window. // - BeginPopupModal(): block every interaction behind the window, cannot be closed by user, add a dimming background, has a title bar. IMGUI_API bool BeginPopup(const char* str_id, ImGuiWindowFlags flags = 0); // return true if the popup is open, and you can start outputting to it. + IMGUI_API bool BeginPopup(ImGuiID id, ImGuiWindowFlags flags = 0); // id overload. IMGUI_API bool BeginPopupModal(const char* name, bool* p_open = NULL, ImGuiWindowFlags flags = 0); // return true if the modal is open, and you can start outputting to it. IMGUI_API void EndPopup(); // only call EndPopup() if BeginPopupXXX() returns true!