diff options
Diffstat (limited to 'CruUI/ui/layout_base.cpp')
-rw-r--r-- | CruUI/ui/layout_base.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/CruUI/ui/layout_base.cpp b/CruUI/ui/layout_base.cpp index a589d2ea..a26379a0 100644 --- a/CruUI/ui/layout_base.cpp +++ b/CruUI/ui/layout_base.cpp @@ -17,11 +17,13 @@ namespace cru::ui return; // find descendant then erase it; find ancestor then just return. - for (auto i = cache_invalid_controls_.cbegin(); i != cache_invalid_controls_.cend(); ++i) + auto i = cache_invalid_controls_.cbegin(); + while (i != cache_invalid_controls_.cend()) { - const auto result = IsAncestorOrDescendant(*i, control); + auto current_i = i++; + const auto result = IsAncestorOrDescendant(*current_i, control); if (result == control) - cache_invalid_controls_.erase(i); + cache_invalid_controls_.erase(current_i); else if (result != nullptr) return; // find a ancestor of "control", just return } |