1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-09 12:50:35 +00:00

Backport CanvasLayer visibility

This commit is contained in:
Haoyu Qiu
2022-02-10 16:50:27 +08:00
parent 0c7c640112
commit f49ffe4bb0
6 changed files with 103 additions and 52 deletions

View File

@@ -361,6 +361,17 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent, bool p_scroll
}
_update_visibility_color(p_node, item);
} else if (p_node->is_class("CanvasLayer")) {
bool v = p_node->call("is_visible");
if (v) {
item->add_button(0, get_icon("GuiVisibilityVisible", "EditorIcons"), BUTTON_VISIBILITY, false, TTR("Toggle Visibility"));
} else {
item->add_button(0, get_icon("GuiVisibilityHidden", "EditorIcons"), BUTTON_VISIBILITY, false, TTR("Toggle Visibility"));
}
if (!p_node->is_connected("visibility_changed", this, "_node_visibility_changed")) {
p_node->connect("visibility_changed", this, "_node_visibility_changed", varray(p_node));
}
} else if (p_node->is_class("Spatial")) {
bool is_locked = p_node->has_meta("_edit_lock_");
if (is_locked) {
@@ -470,6 +481,9 @@ void SceneTreeEditor::_node_visibility_changed(Node *p_node) {
if (p_node->is_class("CanvasItem")) {
visible = p_node->call("is_visible");
CanvasItemEditor::get_singleton()->get_viewport_control()->update();
} else if (p_node->is_class("CanvasLayer")) {
visible = p_node->call("is_visible");
CanvasItemEditor::get_singleton()->get_viewport_control()->update();
} else if (p_node->is_class("Spatial")) {
visible = p_node->call("is_visible");
}
@@ -528,7 +542,7 @@ void SceneTreeEditor::_node_removed(Node *p_node) {
p_node->disconnect("script_changed", this, "_node_script_changed");
}
if (p_node->is_class("Spatial") || p_node->is_class("CanvasItem")) {
if (p_node->is_class("Spatial") || p_node->is_class("CanvasItem") || p_node->is_class("CanvasLayer")) {
if (p_node->is_connected("visibility_changed", this, "_node_visibility_changed")) {
p_node->disconnect("visibility_changed", this, "_node_visibility_changed");
}