Merge pull request #104451 from WinnerWind/fix_resized_logic_for_control
Fix excessively calling resized and floating point errors in Control.
This commit is contained in:
@ -1743,8 +1743,11 @@ void Control::_size_changed() {
|
||||
new_size_cache.height = minimum_size.height;
|
||||
}
|
||||
|
||||
bool pos_changed = !new_pos_cache.is_equal_approx(data.pos_cache);
|
||||
bool size_changed = !new_size_cache.is_equal_approx(data.size_cache);
|
||||
bool pos_changed = new_pos_cache != data.pos_cache;
|
||||
bool size_changed = new_size_cache != data.size_cache;
|
||||
// Below helps in getting rid of floating point errors for signaling resized.
|
||||
bool approx_pos_changed = !new_pos_cache.is_equal_approx(data.pos_cache);
|
||||
bool approx_size_changed = !new_size_cache.is_equal_approx(data.size_cache);
|
||||
|
||||
if (pos_changed) {
|
||||
data.pos_cache = new_pos_cache;
|
||||
@ -1754,13 +1757,13 @@ void Control::_size_changed() {
|
||||
}
|
||||
|
||||
if (is_inside_tree()) {
|
||||
if (pos_changed || size_changed) {
|
||||
if (approx_pos_changed || approx_size_changed) {
|
||||
// Ensure global transform is marked as dirty before `NOTIFICATION_RESIZED` / `item_rect_changed` signal
|
||||
// so an up to date global transform could be obtained when handling these.
|
||||
_notify_transform();
|
||||
|
||||
item_rect_changed(size_changed);
|
||||
if (size_changed) {
|
||||
item_rect_changed(approx_size_changed);
|
||||
if (approx_size_changed) {
|
||||
notification(NOTIFICATION_RESIZED);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user