From ac64b656340a1c8bbca4d2b80ad4344ed5ee5109 Mon Sep 17 00:00:00 2001 From: ocornut Date: Mon, 14 Aug 2023 16:16:39 +0200 Subject: [PATCH] Render: draw dimmed background earlier to match docking code. (#6716) Amend f422e78 --- docs/CHANGELOG.txt | 2 ++ imgui.cpp | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt index ba956a1de..786b6c9b5 100644 --- a/docs/CHANGELOG.txt +++ b/docs/CHANGELOG.txt @@ -50,6 +50,8 @@ Other changes: through proper navigation logic: honor scrolling and selection. (#1079, #1131) - Sliders: Fixed an integer overflow and div-by-zero in SliderInt() when v_max=INT_MAX (#6675, #6679) [@jbarthelmes] +- ImDrawData: Fixed an issue where TotalVtxCount/TotalIdxCount does not match the sum + of individual ImDrawList's buffer sizes when a dimming/modal background is rendered. (#6716) - ImDrawList: Fixed OOB access in _CalcCircleAutoSegmentCount when passing excessively large radius to AddCircle(). (#6657, #5317) [@EggsyCRO, @jdpatdiscord] - Debug Tools: Metrics: Fixed "Drawlists" section and per-viewport equivalent diff --git a/imgui.cpp b/imgui.cpp index af1493968..2739c847d 100644 --- a/imgui.cpp +++ b/imgui.cpp @@ -5083,6 +5083,10 @@ void ImGui::Render() CallContextHooks(&g, ImGuiContextHookType_RenderPre); + // Draw modal/window whitening backgrounds + if (first_render_of_frame) + RenderDimmedBackgrounds(); + // Add background ImDrawList (for each active viewport) for (int n = 0; n != g.Viewports.Size; n++) { @@ -5092,10 +5096,6 @@ void ImGui::Render() AddDrawListToDrawDataEx(&viewport->DrawDataP, viewport->DrawDataBuilder.Layers[0], GetBackgroundDrawList(viewport)); } - // Draw modal/window whitening backgrounds - if (first_render_of_frame) - RenderDimmedBackgrounds(); - // Add ImDrawList to render ImGuiWindow* windows_to_render_top_most[2]; windows_to_render_top_most[0] = (g.NavWindowingTarget && !(g.NavWindowingTarget->Flags & ImGuiWindowFlags_NoBringToFrontOnFocus)) ? g.NavWindowingTarget->RootWindow : NULL;