Reverted 11025b3160, 129339adb0 it breaks collapsing implicit debug window

This commit is contained in:
ocornut 2015-03-20 10:54:21 +00:00
parent 2d81a73f85
commit c070314621

View File

@ -1169,6 +1169,7 @@ struct ImGuiWindow
float NextScrollY;
bool ScrollbarY;
bool Visible; // Set to true on Begin()
bool Accessed; // Set to true when any widget access the current window
bool Collapsed; // Set when collapsing window to become only title-bar
bool SkipItems; // == Visible && !Collapsed
int AutoFitFrames;
@ -1222,6 +1223,7 @@ static inline ImGuiWindow* GetCurrentWindow()
{
ImGuiState& g = *GImGui;
IM_ASSERT(g.CurrentWindow != NULL); // ImGui::NewFrame() hasn't been called yet?
g.CurrentWindow->Accessed = true;
return g.CurrentWindow;
}
@ -1510,6 +1512,7 @@ ImGuiWindow::ImGuiWindow(const char* name)
NextScrollY = 0.0f;
ScrollbarY = false;
Visible = false;
Accessed = false;
Collapsed = false;
SkipItems = false;
AutoFitFrames = -1;
@ -1934,6 +1937,7 @@ void ImGui::NewFrame()
{
ImGuiWindow* window = g.Windows[i];
window->Visible = false;
window->Accessed = false;
}
// No window should be open at the beginning of the frame.
@ -2060,8 +2064,7 @@ void ImGui::Render()
{
// Hide implicit window if it hasn't been used
IM_ASSERT(g.CurrentWindowStack.size() == 1); // Mismatched Begin/End
if (ImGuiWindow* window = g.CurrentWindow)
if (ImLengthSqr(window->DC.CursorMaxPos - window->DC.CursorStartPos) < 0.001f)
if (g.CurrentWindow && !g.CurrentWindow->Accessed)
g.CurrentWindow->Visible = false;
ImGui::End();
@ -3194,6 +3197,10 @@ bool ImGui::Begin(const char* name, bool* p_opened, const ImVec2& size, float bg
clip_rect.z -= style.ScrollbarWidth;
PushClipRect(clip_rect);
// Clear 'accessed' flag last thing
if (first_begin_of_the_frame)
window->Accessed = false;
// Child window can be out of sight and have "negative" clip windows.
// Mark them as collapsed so commands are skipped earlier (we can't manually collapse because they have no title bar).
if (flags & ImGuiWindowFlags_ChildWindow)