diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-07-20 22:37:32 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-20 22:37:32 +0200 |
commit | 976cb7ea9f59813f99e06c4c345c19ff68c2c591 (patch) | |
tree | e33c1cf9ff613292d03b7d039a86b62eed96b27e | |
parent | 010289a07642c24da77809b9e50eb65b9da03f55 (diff) | |
parent | 57ff4032d0ac1df7a2a2d6e81498509b07401ef0 (diff) |
Merge pull request #63235 from kleonc/canvas-item-remove-from-canvas-group
-rw-r--r-- | scene/main/canvas_item.cpp | 15 | ||||
-rw-r--r-- | scene/main/canvas_item.h | 2 |
2 files changed, 10 insertions, 7 deletions
diff --git a/scene/main/canvas_item.cpp b/scene/main/canvas_item.cpp index 2cd7cf5648..e298805aca 100644 --- a/scene/main/canvas_item.cpp +++ b/scene/main/canvas_item.cpp @@ -230,16 +230,16 @@ void CanvasItem::_enter_canvas() { RenderingServer::get_singleton()->canvas_item_set_parent(canvas_item, canvas); - group = "root_canvas" + itos(canvas.get_id()); + canvas_group = "root_canvas" + itos(canvas.get_id()); - add_to_group(group); + add_to_group(canvas_group); if (canvas_layer) { canvas_layer->reset_sort_index(); } else { get_viewport()->gui_reset_canvas_sort_index(); } - get_tree()->call_group_flags(SceneTree::GROUP_CALL_UNIQUE | SceneTree::GROUP_CALL_DEFERRED, group, SNAME("_top_level_raise_self")); + get_tree()->call_group_flags(SceneTree::GROUP_CALL_UNIQUE | SceneTree::GROUP_CALL_DEFERRED, canvas_group, SNAME("_top_level_raise_self")); } else { CanvasItem *parent = get_parent_item(); @@ -258,7 +258,10 @@ void CanvasItem::_exit_canvas() { notification(NOTIFICATION_EXIT_CANVAS, true); //reverse the notification RenderingServer::get_singleton()->canvas_item_set_parent(canvas_item, RID()); canvas_layer = nullptr; - group = StringName(); + if (canvas_group != StringName()) { + remove_from_group(canvas_group); + canvas_group = StringName(); + } } void CanvasItem::_notification(int p_what) { @@ -319,8 +322,8 @@ void CanvasItem::_notification(int p_what) { break; } - if (group != StringName()) { - get_tree()->call_group_flags(SceneTree::GROUP_CALL_UNIQUE | SceneTree::GROUP_CALL_DEFERRED, group, "_top_level_raise_self"); + if (canvas_group != StringName()) { + get_tree()->call_group_flags(SceneTree::GROUP_CALL_UNIQUE | SceneTree::GROUP_CALL_DEFERRED, canvas_group, "_top_level_raise_self"); } else { CanvasItem *p = get_parent_item(); ERR_FAIL_COND(!p); diff --git a/scene/main/canvas_item.h b/scene/main/canvas_item.h index a4574dce61..f5df6512ee 100644 --- a/scene/main/canvas_item.h +++ b/scene/main/canvas_item.h @@ -70,7 +70,7 @@ private: mutable SelfList<Node> xform_change; RID canvas_item; - StringName group; + StringName canvas_group; CanvasLayer *canvas_layer = nullptr; |