Fix Control nodes emitting unnecessary resized signals

This commit is contained in:
Hendrik Brucker 2024-07-05 01:41:21 +02:00
parent 6a13fdcae3
commit 1c47fd7089

View file

@ -1732,11 +1732,15 @@ void Control::_size_changed() {
new_size_cache.height = minimum_size.height;
}
bool pos_changed = new_pos_cache != data.pos_cache;
bool size_changed = new_size_cache != data.size_cache;
bool pos_changed = !new_pos_cache.is_equal_approx(data.pos_cache);
bool size_changed = !new_size_cache.is_equal_approx(data.size_cache);
data.pos_cache = new_pos_cache;
data.size_cache = new_size_cache;
if (pos_changed) {
data.pos_cache = new_pos_cache;
}
if (size_changed) {
data.size_cache = new_size_cache;
}
if (is_inside_tree()) {
if (pos_changed || size_changed) {
@ -1751,12 +1755,10 @@ void Control::_size_changed() {
}
if (pos_changed && !size_changed) {
_update_canvas_item_transform(); //move because it won't be updated
}
} else {
if (pos_changed) {
_notify_transform();
_update_canvas_item_transform();
}
} else if (pos_changed) {
_notify_transform();
}
}