Fix Control nodes emitting unnecessary resized signals
This commit is contained in:
@ -1732,11 +1732,15 @@ void Control::_size_changed() {
|
|||||||
new_size_cache.height = minimum_size.height;
|
new_size_cache.height = minimum_size.height;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool pos_changed = new_pos_cache != data.pos_cache;
|
bool pos_changed = !new_pos_cache.is_equal_approx(data.pos_cache);
|
||||||
bool size_changed = new_size_cache != data.size_cache;
|
bool size_changed = !new_size_cache.is_equal_approx(data.size_cache);
|
||||||
|
|
||||||
|
if (pos_changed) {
|
||||||
data.pos_cache = new_pos_cache;
|
data.pos_cache = new_pos_cache;
|
||||||
|
}
|
||||||
|
if (size_changed) {
|
||||||
data.size_cache = new_size_cache;
|
data.size_cache = new_size_cache;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_inside_tree()) {
|
if (is_inside_tree()) {
|
||||||
if (pos_changed || size_changed) {
|
if (pos_changed || size_changed) {
|
||||||
@ -1751,14 +1755,12 @@ void Control::_size_changed() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (pos_changed && !size_changed) {
|
if (pos_changed && !size_changed) {
|
||||||
_update_canvas_item_transform(); //move because it won't be updated
|
_update_canvas_item_transform();
|
||||||
}
|
}
|
||||||
} else {
|
} else if (pos_changed) {
|
||||||
if (pos_changed) {
|
|
||||||
_notify_transform();
|
_notify_transform();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void Control::_clear_size_warning() {
|
void Control::_clear_size_warning() {
|
||||||
data.size_warning = false;
|
data.size_warning = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user