Windows: clarify/simplify background rendering: alpha should always be zero for DockNodeHost windows. (#2522)

Amend b16f738d04 which AFAIK misleadingly added ImGuiWindowFlags_DockNodeHost tests in there.
This commit is contained in:
ocornut
2026-01-29 14:05:32 +01:00
parent 63e9fbc265
commit a6598f6fdb
+8 -3
View File
@@ -7479,16 +7479,21 @@ void ImGui::RenderWindowDecorations(ImGuiWindow* window, const ImRect& title_bar
bg_col = (bg_col & ~IM_COL32_A_MASK) | (IM_F32_TO_INT8_SAT(alpha) << IM_COL32_A_SHIFT); bg_col = (bg_col & ~IM_COL32_A_MASK) | (IM_F32_TO_INT8_SAT(alpha) << IM_COL32_A_SHIFT);
} }
// Render, for docked windows and host windows we ensure bg goes before decorations // Render, for docked windows and host windows we ensure BG goes before decorations
if (window->DockIsActive) if (window->DockIsActive)
window->DockNode->LastBgColor = bg_col; window->DockNode->LastBgColor = bg_col;
if (flags & ImGuiWindowFlags_DockNodeHost)
bg_col = 0;
if (bg_col & IM_COL32_A_MASK)
{
ImDrawList* bg_draw_list = window->DockIsActive ? window->DockNode->HostWindow->DrawList : window->DrawList; ImDrawList* bg_draw_list = window->DockIsActive ? window->DockNode->HostWindow->DrawList : window->DrawList;
if (window->DockIsActive || (flags & ImGuiWindowFlags_DockNodeHost)) if (window->DockIsActive)
bg_draw_list->ChannelsSetCurrent(DOCKING_HOST_DRAW_CHANNEL_BG); bg_draw_list->ChannelsSetCurrent(DOCKING_HOST_DRAW_CHANNEL_BG);
bg_draw_list->AddRectFilled(window->Pos + ImVec2(0, window->TitleBarHeight), window->Pos + window->Size, bg_col, window_rounding, (flags & ImGuiWindowFlags_NoTitleBar) ? 0 : ImDrawFlags_RoundCornersBottom); bg_draw_list->AddRectFilled(window->Pos + ImVec2(0, window->TitleBarHeight), window->Pos + window->Size, bg_col, window_rounding, (flags & ImGuiWindowFlags_NoTitleBar) ? 0 : ImDrawFlags_RoundCornersBottom);
if (window->DockIsActive || (flags & ImGuiWindowFlags_DockNodeHost)) if (window->DockIsActive)
bg_draw_list->ChannelsSetCurrent(DOCKING_HOST_DRAW_CHANNEL_FG); bg_draw_list->ChannelsSetCurrent(DOCKING_HOST_DRAW_CHANNEL_FG);
} }
}
if (window->DockIsActive) if (window->DockIsActive)
window->DockNode->IsBgDrawnThisFrame = true; window->DockNode->IsBgDrawnThisFrame = true;