From 249d6a4225ed8fc6c0375496c5bfc99e056a4b45 Mon Sep 17 00:00:00 2001 From: Markus Sauermann <6299227+Sauermann@users.noreply.github.com> Date: Thu, 17 Mar 2022 09:11:46 +0100 Subject: [PATCH] Fix how Root Control Node is determined --- scene/gui/control.cpp | 24 +++++++----------------- 1 file changed, 7 insertions(+), 17 deletions(-) diff --git a/scene/gui/control.cpp b/scene/gui/control.cpp index 96d2b29fc1e..03dd8b22a07 100644 --- a/scene/gui/control.cpp +++ b/scene/gui/control.cpp @@ -712,35 +712,25 @@ void Control::_notification(int p_notification) { data.parent_window = Object::cast_to(get_parent()); data.is_rtl_dirty = true; - Node *parent = this; //meh + CanvasItem *node = this; 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(node->get_parent()); if (!parent) { break; } - CanvasItem *ci = Object::cast_to(parent); - if (ci && ci->is_set_as_top_level()) { - subwindow = true; - break; - } - parent_control = Object::cast_to(parent); - if (parent_control) { 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) { data.theme_owner = parent_control->data.theme_owner; notification(NOTIFICATION_THEME_CHANGED);