Prevent stale updates to parent maximum size cache

(cherry picked from commit 9c626406eeb7b054180cb12e9ae0f8bb3e8fae20)
This commit is contained in:
Enzo Novoselic authored and Thaddeus Crews committed 2026-07-30 11:30:02 -05:00
1 parent d65269fc91
commit 1236f8b8f8
1 file changed
+7 -2
+7 -2
View File
@@ -1738,10 +1738,14 @@ void Control::update_maximum_size() {
data.maximum_size_valid = false;
Size2 parent_max = data.propagate_maximum_size ? get_inner_combined_maximum_size().min(get_combined_maximum_size()) : Size2(-1, -1);
parent_max = parent_max.maxf(-1.0f);
for (Node *child : iterate_children()) {
Control *child_control = Object::cast_to<Control>(child);
if (child_control && !child_control->is_set_as_top_level() && child_control->data.maximum_size_valid) {
if (child_control->data.parent_maximum_size_cache == parent_max) {
continue;
}
child_control->data.parent_maximum_size_cache = parent_max;
child_control->update_maximum_size();
}
@@ -1862,10 +1866,11 @@ Size2 Control::get_inner_combined_maximum_size() const {
}
void Control::set_parent_maximum_size_cache(const Size2 &p_parent_max) {
if (data.parent_maximum_size_cache == p_parent_max) {
const Size2 normalized = p_parent_max.maxf(-1.0f);
if (data.parent_maximum_size_cache == normalized) {
return;
}
data.parent_maximum_size_cache = p_parent_max;
data.parent_maximum_size_cache = normalized;
update_maximum_size();
}