Internals: Begin: update ->Hidden flags only on first begin of the frame. (ignore whitespace to see simple diff)

This commit is contained in:
ocornut 2020-09-01 15:24:24 +02:00
parent ce230fc370
commit a456d17dfc

View File

@ -5248,6 +5248,7 @@ void ImGui::RenderWindowDecorations(ImGuiWindow* window, const ImRect& title_bar
ImGuiWindowFlags flags = window->Flags; ImGuiWindowFlags flags = window->Flags;
// Ensure that ScrollBar doesn't read last frame's SkipItems // Ensure that ScrollBar doesn't read last frame's SkipItems
IM_ASSERT(window->BeginCount == 0);
window->SkipItems = false; window->SkipItems = false;
// Draw window + handle manual resize // Draw window + handle manual resize
@ -6029,6 +6030,9 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
window->BeginCount++; window->BeginCount++;
g.NextWindowData.ClearFlags(); g.NextWindowData.ClearFlags();
// Update visibility
if (first_begin_of_the_frame)
{
if (flags & ImGuiWindowFlags_ChildWindow) if (flags & ImGuiWindowFlags_ChildWindow)
{ {
// Child window can be out of sight and have "negative" clip windows. // Child window can be out of sight and have "negative" clip windows.
@ -6058,8 +6062,9 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
if (window->AutoFitFramesX <= 0 && window->AutoFitFramesY <= 0 && window->HiddenFramesCannotSkipItems <= 0) if (window->AutoFitFramesX <= 0 && window->AutoFitFramesY <= 0 && window->HiddenFramesCannotSkipItems <= 0)
skip_items = true; skip_items = true;
window->SkipItems = skip_items; window->SkipItems = skip_items;
}
return !skip_items; return !window->SkipItems;
} }
void ImGui::End() void ImGui::End()