diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2024-07-05 16:38:10 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-05 16:38:10 +0200 |
commit | b97110cd307e4d78e20bfafe5de6c082194b2cd6 (patch) | |
tree | 8ea28aa73d3408698ed191c74ffa6af8178ebad1 | |
parent | c9ca3aa9aba1f213e5eaa31f98183d3a6910d19f (diff) | |
parent | 1c47fd7089a5d77632e64add0beefecffb688217 (diff) | |
download | redot-engine-b97110cd307e4d78e20bfafe5de6c082194b2cd6.tar.gz |
Merge pull request #93908 from Geometror/ge-resized-fix
Fix `Control` nodes emitting unnecessary `resized` signals
-rw-r--r-- | scene/gui/control.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 0682c11a9b..1d53edbfa6 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -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(); } } |