| 5582 | } |
| 5583 | |
| 5584 | static void UpdateWindowInFocusOrderList(ImGuiWindow* window, bool just_created, ImGuiWindowFlags new_flags) |
| 5585 | { |
| 5586 | ImGuiContext& g = *GImGui; |
| 5587 | |
| 5588 | const bool new_is_explicit_child = (new_flags & ImGuiWindowFlags_ChildWindow) != 0 && ((new_flags & ImGuiWindowFlags_Popup) == 0 || (new_flags & ImGuiWindowFlags_ChildMenu) != 0); |
| 5589 | const bool child_flag_changed = new_is_explicit_child != window->IsExplicitChild; |
| 5590 | if ((just_created || child_flag_changed) && !new_is_explicit_child) |
| 5591 | { |
| 5592 | IM_ASSERT(!g.WindowsFocusOrder.contains(window)); |
| 5593 | g.WindowsFocusOrder.push_back(window); |
| 5594 | window->FocusOrder = (short)(g.WindowsFocusOrder.Size - 1); |
| 5595 | } |
| 5596 | else if (!just_created && child_flag_changed && new_is_explicit_child) |
| 5597 | { |
| 5598 | IM_ASSERT(g.WindowsFocusOrder[window->FocusOrder] == window); |
| 5599 | for (int n = window->FocusOrder + 1; n < g.WindowsFocusOrder.Size; n++) |
| 5600 | g.WindowsFocusOrder[n]->FocusOrder--; |
| 5601 | g.WindowsFocusOrder.erase(g.WindowsFocusOrder.Data + window->FocusOrder); |
| 5602 | window->FocusOrder = -1; |
| 5603 | } |
| 5604 | window->IsExplicitChild = new_is_explicit_child; |
| 5605 | } |
| 5606 | |
| 5607 | static void InitOrLoadWindowSettings(ImGuiWindow* window, ImGuiWindowSettings* settings) |
| 5608 | { |