mirror of
https://github.com/Drezil/imgui.git
synced 2025-07-04 03:58:47 +02:00
Added IsWindowAppearing().
This commit is contained in:
22
imgui.cpp
22
imgui.cpp
@ -1789,6 +1789,7 @@ ImGuiWindow::ImGuiWindow(const char* name)
|
||||
Accessed = false;
|
||||
Collapsed = false;
|
||||
SkipItems = false;
|
||||
Appearing = false;
|
||||
BeginCount = 0;
|
||||
PopupId = 0;
|
||||
AutoFitFramesX = AutoFitFramesY = -1;
|
||||
@ -3976,13 +3977,15 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
|
||||
}
|
||||
|
||||
const bool window_appearing_after_being_hidden = (window->HiddenFrames == 1);
|
||||
window->Appearing = (!window_was_active || window_appearing_after_being_hidden);
|
||||
|
||||
// Process SetNextWindow***() calls
|
||||
bool window_pos_set_by_api = false, window_size_set_by_api = false;
|
||||
if (g.SetNextWindowPosCond)
|
||||
{
|
||||
const ImVec2 backup_cursor_pos = window->DC.CursorPos; // FIXME: not sure of the exact reason of this saving/restore anymore :( need to look into that.
|
||||
if (!window_was_active || window_appearing_after_being_hidden) window->SetWindowPosAllowFlags |= ImGuiCond_Appearing;
|
||||
if (window->Appearing)
|
||||
window->SetWindowPosAllowFlags |= ImGuiCond_Appearing;
|
||||
window_pos_set_by_api = (window->SetWindowPosAllowFlags & g.SetNextWindowPosCond) != 0;
|
||||
if (window_pos_set_by_api && ImLengthSqr(g.SetNextWindowPosVal - ImVec2(-FLT_MAX,-FLT_MAX)) < 0.001f)
|
||||
{
|
||||
@ -3998,7 +4001,8 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
|
||||
}
|
||||
if (g.SetNextWindowSizeCond)
|
||||
{
|
||||
if (!window_was_active || window_appearing_after_being_hidden) window->SetWindowSizeAllowFlags |= ImGuiCond_Appearing;
|
||||
if (window->Appearing)
|
||||
window->SetWindowSizeAllowFlags |= ImGuiCond_Appearing;
|
||||
window_size_set_by_api = (window->SetWindowSizeAllowFlags & g.SetNextWindowSizeCond) != 0;
|
||||
SetWindowSize(window, g.SetNextWindowSizeVal, g.SetNextWindowSizeCond);
|
||||
g.SetNextWindowSizeCond = 0;
|
||||
@ -4014,13 +4018,14 @@ bool ImGui::Begin(const char* name, bool* p_open, const ImVec2& size_on_first_us
|
||||
}
|
||||
if (g.SetNextWindowCollapsedCond)
|
||||
{
|
||||
if (!window_was_active || window_appearing_after_being_hidden) window->SetWindowCollapsedAllowFlags |= ImGuiCond_Appearing;
|
||||
if (window->Appearing)
|
||||
window->SetWindowCollapsedAllowFlags |= ImGuiCond_Appearing;
|
||||
SetWindowCollapsed(window, g.SetNextWindowCollapsedVal, g.SetNextWindowCollapsedCond);
|
||||
g.SetNextWindowCollapsedCond = 0;
|
||||
}
|
||||
if (g.SetNextWindowFocus)
|
||||
{
|
||||
ImGui::SetWindowFocus();
|
||||
SetWindowFocus();
|
||||
g.SetNextWindowFocus = false;
|
||||
}
|
||||
|
||||
@ -5073,7 +5078,14 @@ void ImGui::SetWindowCollapsed(bool collapsed, ImGuiCond cond)
|
||||
|
||||
bool ImGui::IsWindowCollapsed()
|
||||
{
|
||||
return GImGui->CurrentWindow->Collapsed;
|
||||
ImGuiWindow* window = GetCurrentWindowRead();
|
||||
return window->Collapsed;
|
||||
}
|
||||
|
||||
bool ImGui::IsWindowAppearing()
|
||||
{
|
||||
ImGuiWindow* window = GetCurrentWindowRead();
|
||||
return window->Appearing;
|
||||
}
|
||||
|
||||
void ImGui::SetWindowCollapsed(const char* name, bool collapsed, ImGuiCond cond)
|
||||
|
Reference in New Issue
Block a user