|
@@ -6181,24 +6181,29 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|
|
window->DrawList->AddRectFilled(bb.Min, bb.Max, GetColorU32(ImGuiCol_NavWindowingHighlight, g.NavWindowingHighlightAlpha * 0.25f), g.Style.WindowRounding);
|
|
|
}
|
|
|
|
|
|
+ const bool is_undocked_or_docked_visible = !window->DockIsActive || window->DockTabIsVisible;
|
|
|
+
|
|
|
// Since 1.71, child window can render their decoration (bg color, border, scrollbars, etc.) within their parent to save a draw call.
|
|
|
// When using overlapping child windows, this will break the assumption that child z-order is mapped to submission order.
|
|
|
// We disable this when the parent window has zero vertices, which is a common pattern leading to laying out multiple overlapping child.
|
|
|
// We also disabled this when we have dimming overlay behind this specific one child.
|
|
|
// FIXME: More code may rely on explicit sorting of overlapping child window and would need to disable this somehow. Please get in contact if you are affected.
|
|
|
- bool render_decorations_in_parent = false;
|
|
|
- if ((flags & ImGuiWindowFlags_ChildWindow) && !(flags & ImGuiWindowFlags_Popup) && !window_is_child_tooltip)
|
|
|
- if (window->DrawList->CmdBuffer.back().ElemCount == 0 && parent_window->DrawList->VtxBuffer.Size > 0)
|
|
|
- render_decorations_in_parent = true;
|
|
|
- if (render_decorations_in_parent)
|
|
|
- window->DrawList = parent_window->DrawList;
|
|
|
-
|
|
|
- const ImGuiWindow* window_to_highlight = g.NavWindowingTarget ? g.NavWindowingTarget : g.NavWindow;
|
|
|
- const bool title_bar_is_highlight = want_focus || (window_to_highlight && (window->RootWindowForTitleBarHighlight == window_to_highlight->RootWindowForTitleBarHighlight || (window->DockNode && window->DockNode == window_to_highlight->DockNode)));
|
|
|
- RenderWindowDecorations(window, title_bar_rect, title_bar_is_highlight, handle_borders_and_resize_grips, resize_grip_count, resize_grip_col, resize_grip_draw_size);
|
|
|
+ if (is_undocked_or_docked_visible)
|
|
|
+ {
|
|
|
+ bool render_decorations_in_parent = false;
|
|
|
+ if ((flags & ImGuiWindowFlags_ChildWindow) && !(flags & ImGuiWindowFlags_Popup) && !window_is_child_tooltip)
|
|
|
+ if (window->DrawList->CmdBuffer.back().ElemCount == 0 && parent_window->DrawList->VtxBuffer.Size > 0)
|
|
|
+ render_decorations_in_parent = true;
|
|
|
+ if (render_decorations_in_parent)
|
|
|
+ window->DrawList = parent_window->DrawList;
|
|
|
|
|
|
- if (render_decorations_in_parent)
|
|
|
- window->DrawList = &window->DrawListInst;
|
|
|
+ const ImGuiWindow* window_to_highlight = g.NavWindowingTarget ? g.NavWindowingTarget : g.NavWindow;
|
|
|
+ const bool title_bar_is_highlight = want_focus || (window_to_highlight && (window->RootWindowForTitleBarHighlight == window_to_highlight->RootWindowForTitleBarHighlight || (window->DockNode && window->DockNode == window_to_highlight->DockNode)));
|
|
|
+ RenderWindowDecorations(window, title_bar_rect, title_bar_is_highlight, handle_borders_and_resize_grips, resize_grip_count, resize_grip_col, resize_grip_draw_size);
|
|
|
+
|
|
|
+ if (render_decorations_in_parent)
|
|
|
+ window->DrawList = &window->DrawListInst;
|
|
|
+ }
|
|
|
|
|
|
// Draw navigation selection/windowing rectangle border
|
|
|
if (g.NavWindowingTargetAnim == window)
|