浏览代码

Invalidate Control global transform before notifying about resize / rect change

kleonc 1 年之前
父节点
当前提交
22b6f962d9
共有 1 个文件被更改,包括 7 次插入4 次删除
  1. 7 4
      scene/gui/control.cpp

+ 7 - 4
scene/gui/control.cpp

@@ -1739,12 +1739,15 @@ void Control::_size_changed() {
 	data.size_cache = new_size_cache;
 
 	if (is_inside_tree()) {
-		if (size_changed) {
-			notification(NOTIFICATION_RESIZED);
-		}
 		if (pos_changed || size_changed) {
-			item_rect_changed(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();
+
+			if (size_changed) {
+				notification(NOTIFICATION_RESIZED);
+			}
+			item_rect_changed(size_changed);
 		}
 
 		if (pos_changed && !size_changed) {