Browse Source

Merge pull request #59231 from Sauermann/fix-top-level-identification

Rémi Verschelde 3 years ago
parent
commit
fa2b3269ae
1 changed files with 7 additions and 17 deletions
  1. 7 17
      scene/gui/control.cpp

+ 7 - 17
scene/gui/control.cpp

@@ -712,35 +712,25 @@ void Control::_notification(int p_notification) {
 			data.parent_window = Object::cast_to<Window>(get_parent());
 			data.parent_window = Object::cast_to<Window>(get_parent());
 			data.is_rtl_dirty = true;
 			data.is_rtl_dirty = true;
 
 
-			Node *parent = this; //meh
+			CanvasItem *node = this;
 			Control *parent_control = nullptr;
 			Control *parent_control = nullptr;
-			bool subwindow = false;
-
-			while (parent) {
-				parent = parent->get_parent();
 
 
+			while (!node->is_set_as_top_level()) {
+				CanvasItem *parent = Object::cast_to<CanvasItem>(node->get_parent());
 				if (!parent) {
 				if (!parent) {
 					break;
 					break;
 				}
 				}
 
 
-				CanvasItem *ci = Object::cast_to<CanvasItem>(parent);
-				if (ci && ci->is_set_as_top_level()) {
-					subwindow = true;
-					break;
-				}
-
 				parent_control = Object::cast_to<Control>(parent);
 				parent_control = Object::cast_to<Control>(parent);
-
 				if (parent_control) {
 				if (parent_control) {
 					break;
 					break;
-				} else if (ci) {
-				} else {
-					break;
 				}
 				}
+
+				node = parent;
 			}
 			}
 
 
-			if (parent_control && !subwindow) {
-				//do nothing, has a parent control and not top_level
+			if (parent_control) {
+				// Do nothing, has a parent control.
 				if (data.theme.is_null() && parent_control->data.theme_owner) {
 				if (data.theme.is_null() && parent_control->data.theme_owner) {
 					data.theme_owner = parent_control->data.theme_owner;
 					data.theme_owner = parent_control->data.theme_owner;
 					notification(NOTIFICATION_THEME_CHANGED);
 					notification(NOTIFICATION_THEME_CHANGED);