|
@@ -1789,6 +1789,7 @@ ImGuiWindow::ImGuiWindow(const char* name)
|
|
Accessed = false;
|
|
Accessed = false;
|
|
Collapsed = false;
|
|
Collapsed = false;
|
|
SkipItems = false;
|
|
SkipItems = false;
|
|
|
|
+ Appearing = false;
|
|
BeginCount = 0;
|
|
BeginCount = 0;
|
|
PopupId = 0;
|
|
PopupId = 0;
|
|
AutoFitFramesX = AutoFitFramesY = -1;
|
|
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);
|
|
const bool window_appearing_after_being_hidden = (window->HiddenFrames == 1);
|
|
|
|
+ window->Appearing = (!window_was_active || window_appearing_after_being_hidden);
|
|
|
|
|
|
// Process SetNextWindow***() calls
|
|
// Process SetNextWindow***() calls
|
|
bool window_pos_set_by_api = false, window_size_set_by_api = false;
|
|
bool window_pos_set_by_api = false, window_size_set_by_api = false;
|
|
if (g.SetNextWindowPosCond)
|
|
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.
|
|
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;
|
|
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)
|
|
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 (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;
|
|
window_size_set_by_api = (window->SetWindowSizeAllowFlags & g.SetNextWindowSizeCond) != 0;
|
|
SetWindowSize(window, g.SetNextWindowSizeVal, g.SetNextWindowSizeCond);
|
|
SetWindowSize(window, g.SetNextWindowSizeVal, g.SetNextWindowSizeCond);
|
|
g.SetNextWindowSizeCond = 0;
|
|
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 (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);
|
|
SetWindowCollapsed(window, g.SetNextWindowCollapsedVal, g.SetNextWindowCollapsedCond);
|
|
g.SetNextWindowCollapsedCond = 0;
|
|
g.SetNextWindowCollapsedCond = 0;
|
|
}
|
|
}
|
|
if (g.SetNextWindowFocus)
|
|
if (g.SetNextWindowFocus)
|
|
{
|
|
{
|
|
- ImGui::SetWindowFocus();
|
|
|
|
|
|
+ SetWindowFocus();
|
|
g.SetNextWindowFocus = false;
|
|
g.SetNextWindowFocus = false;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -5073,7 +5078,14 @@ void ImGui::SetWindowCollapsed(bool collapsed, ImGuiCond cond)
|
|
|
|
|
|
bool ImGui::IsWindowCollapsed()
|
|
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)
|
|
void ImGui::SetWindowCollapsed(const char* name, bool collapsed, ImGuiCond cond)
|