From ac1f57ba0c0c65f0bd89c997678f1c9863dafef9 Mon Sep 17 00:00:00 2001 From: ocornut Date: Mon, 11 May 2026 16:34:33 +0200 Subject: [PATCH] Fixed BeginMenu() leading to window with is_resizable_width=true. Fix/amend 95bd1577d. (#9355) We should instead probably make BeginChild() not set on ImGuiWindowFlags_AlwaysAutoResize on either ResizeX or ResizeY, but that'll be done later. --- imgui.cpp | 11 +++++++++++ imgui_demo.cpp | 4 ++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/imgui.cpp b/imgui.cpp index d07b53207..15a919457 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -12488,6 +12488,17 @@ bool ImGui::BeginPopupMenuEx(ImGuiID id, const char* label, ImGuiWindowFlags ext return false; } + // As we bypass BeginChild(), set ImGuiChildFlags_AlwaysAutoResize as it is checked independently from ImGuiWindowFlags_AlwaysAutoResize for now (see #9355) + // Ideally we should remove setting ImGuiWindowFlags_AlwaysAutoResize in BeginChild(). + if ((extra_window_flags & ImGuiWindowFlags_ChildWindow) || (extra_window_flags & ImGuiWindowFlags_AlwaysAutoResize)) + { + if (g.NextWindowData.HasFlags & ImGuiNextWindowDataFlags_HasChildFlags) + g.NextWindowData.ChildFlags |= ImGuiChildFlags_AlwaysAutoResize; + else + g.NextWindowData.ChildFlags = ImGuiChildFlags_AlwaysAutoResize; + g.NextWindowData.HasFlags |= ImGuiNextWindowDataFlags_HasChildFlags; + } + char name[128]; IM_ASSERT(extra_window_flags & ImGuiWindowFlags_ChildMenu); ImFormatString(name, IM_COUNTOF(name), "%s###Menu_%02d", label, g.BeginMenuDepth); // Recycle windows based on depth diff --git a/imgui_demo.cpp b/imgui_demo.cpp index d251616ea..28ad5b739 100644 --- a/imgui_demo.cpp +++ b/imgui_demo.cpp @@ -714,7 +714,7 @@ static void DemoWindowMenuBar(ImGuiDemoWindowData* demo_data) ImGui::Checkbox("Highlight ID Conflicts", &io.ConfigDebugHighlightIdConflicts); ImGui::EndDisabled(); ImGui::Checkbox("Assert on error recovery", &io.ConfigErrorRecoveryEnableAssert); - ImGui::TextDisabled("(see Demo->Configuration for details & more)"); + ImGui::TextDisabled("(see Demo->Configuration for more)"); ImGui::EndMenu(); } ImGui::MenuItem("Debug Log", NULL, &demo_data->ShowDebugLog, has_debug_tools); @@ -8903,7 +8903,7 @@ static void ShowExampleMenuFile() IMGUI_DEMO_MARKER("Examples/Menu/Options"); static bool enabled = true; ImGui::MenuItem("Enabled", "", &enabled); - ImGui::BeginChild("child", ImVec2(0, 60), ImGuiChildFlags_Borders); + ImGui::BeginChild("child", ImVec2(0, ImGui::GetTextLineHeightWithSpacing() * 5.0f), ImGuiChildFlags_Borders); for (int i = 0; i < 10; i++) ImGui::Text("Scrolling Text %d", i); ImGui::EndChild();