Error Handling: fixed not rewinding to recorded tree and id stack size (#1651)
This commit is contained in:
parent
30c29d291f
commit
199a44e31e
@ -10465,6 +10465,7 @@ void ImGui::ErrorRecoveryStoreState(ImGuiErrorRecoveryState* state_out)
|
|||||||
ImGuiContext& g = *GImGui;
|
ImGuiContext& g = *GImGui;
|
||||||
state_out->SizeOfWindowStack = (short)g.CurrentWindowStack.Size;
|
state_out->SizeOfWindowStack = (short)g.CurrentWindowStack.Size;
|
||||||
state_out->SizeOfIDStack = (short)g.CurrentWindow->IDStack.Size;
|
state_out->SizeOfIDStack = (short)g.CurrentWindow->IDStack.Size;
|
||||||
|
state_out->SizeOfTreeStack = (short)g.CurrentWindow->DC.TreeDepth; // NOT g.TreeNodeStack.Size which is a partial stack!
|
||||||
state_out->SizeOfColorStack = (short)g.ColorStack.Size;
|
state_out->SizeOfColorStack = (short)g.ColorStack.Size;
|
||||||
state_out->SizeOfStyleVarStack = (short)g.StyleVarStack.Size;
|
state_out->SizeOfStyleVarStack = (short)g.StyleVarStack.Size;
|
||||||
state_out->SizeOfFontStack = (short)g.FontStack.Size;
|
state_out->SizeOfFontStack = (short)g.FontStack.Size;
|
||||||
@ -10531,7 +10532,7 @@ void ImGui::ErrorRecoveryTryToRecoverWindowState(const ImGuiErrorRecoveryStat
|
|||||||
IM_ASSERT_USER_ERROR(0, "Missing EndMultiSelect()");
|
IM_ASSERT_USER_ERROR(0, "Missing EndMultiSelect()");
|
||||||
EndMultiSelect();
|
EndMultiSelect();
|
||||||
}
|
}
|
||||||
while (window->DC.TreeDepth > 0)
|
while (window->DC.TreeDepth > state_in->SizeOfTreeStack) //-V1044
|
||||||
{
|
{
|
||||||
IM_ASSERT_USER_ERROR(0, "Missing TreePop()");
|
IM_ASSERT_USER_ERROR(0, "Missing TreePop()");
|
||||||
TreePop();
|
TreePop();
|
||||||
@ -10542,7 +10543,7 @@ void ImGui::ErrorRecoveryTryToRecoverWindowState(const ImGuiErrorRecoveryStat
|
|||||||
EndGroup();
|
EndGroup();
|
||||||
}
|
}
|
||||||
IM_ASSERT(g.GroupStack.Size == state_in->SizeOfGroupStack);
|
IM_ASSERT(g.GroupStack.Size == state_in->SizeOfGroupStack);
|
||||||
while (window->IDStack.Size > 1)
|
while (window->IDStack.Size > state_in->SizeOfIDStack) //-V1044
|
||||||
{
|
{
|
||||||
IM_ASSERT_USER_ERROR(0, "Missing PopID()");
|
IM_ASSERT_USER_ERROR(0, "Missing PopID()");
|
||||||
PopID();
|
PopID();
|
||||||
|
@ -1258,6 +1258,7 @@ struct IMGUI_API ImGuiErrorRecoveryState
|
|||||||
{
|
{
|
||||||
short SizeOfWindowStack;
|
short SizeOfWindowStack;
|
||||||
short SizeOfIDStack;
|
short SizeOfIDStack;
|
||||||
|
short SizeOfTreeStack;
|
||||||
short SizeOfColorStack;
|
short SizeOfColorStack;
|
||||||
short SizeOfStyleVarStack;
|
short SizeOfStyleVarStack;
|
||||||
short SizeOfFontStack;
|
short SizeOfFontStack;
|
||||||
|
Loading…
Reference in New Issue
Block a user