summaryrefslogtreecommitdiffstats
path: root/editor/gui/scene_tree_editor.cpp
diff options
context:
space:
mode:
authorGeorge L. Albany <Megacake1234@gmail.com>2024-11-11 16:19:19 +0000
committerGitHub <noreply@github.com>2024-11-11 16:19:19 +0000
commit5094c2a5f7d506b0e685120f14d1df42e1e9d495 (patch)
treea10abf56ba93705731da1aaf338f2cf21403c6ad /editor/gui/scene_tree_editor.cpp
parente7894c2c4efdd51049a21af4892005381fe57cd6 (diff)
parent62fbec9f6f0722a1f9825c17f073742932082228 (diff)
downloadredot-engine-5094c2a5f7d506b0e685120f14d1df42e1e9d495.tar.gz
Merge pull request #853 from Spartan322/merge/0f5f3bc
Merge commit godotengine/godot@0f5f3bc
Diffstat (limited to 'editor/gui/scene_tree_editor.cpp')
-rw-r--r--editor/gui/scene_tree_editor.cpp37
1 files changed, 25 insertions, 12 deletions
diff --git a/editor/gui/scene_tree_editor.cpp b/editor/gui/scene_tree_editor.cpp
index 93c00faab4..96bd6d876f 100644
--- a/editor/gui/scene_tree_editor.cpp
+++ b/editor/gui/scene_tree_editor.cpp
@@ -1686,24 +1686,30 @@ void SceneTreeDialog::_show_all_nodes_changed(bool p_button_pressed) {
}
void SceneTreeDialog::set_valid_types(const Vector<StringName> &p_valid) {
- if (p_valid.is_empty()) {
- return;
+ if (allowed_types_hbox) {
+ allowed_types_hbox->queue_free();
+ allowed_types_hbox = nullptr;
+ valid_type_icons.clear();
}
tree->set_valid_types(p_valid);
- HBoxContainer *hbox = memnew(HBoxContainer);
- content->add_child(hbox);
- content->move_child(hbox, 0);
+ if (p_valid.is_empty()) {
+ return;
+ }
+
+ allowed_types_hbox = memnew(HBoxContainer);
+ content->add_child(allowed_types_hbox);
+ content->move_child(allowed_types_hbox, 0);
{
Label *label = memnew(Label);
- hbox->add_child(label);
+ allowed_types_hbox->add_child(label);
label->set_text(TTR("Allowed:"));
}
HFlowContainer *hflow = memnew(HFlowContainer);
- hbox->add_child(hflow);
+ allowed_types_hbox->add_child(hflow);
hflow->set_h_size_flags(Control::SIZE_EXPAND_FILL);
for (const StringName &type : p_valid) {
@@ -1737,6 +1743,9 @@ void SceneTreeDialog::set_valid_types(const Vector<StringName> &p_valid) {
}
show_all_nodes->show();
+ if (is_inside_tree()) {
+ _update_valid_type_icons();
+ }
}
void SceneTreeDialog::_notification(int p_what) {
@@ -1755,11 +1764,7 @@ void SceneTreeDialog::_notification(int p_what) {
} break;
case NOTIFICATION_THEME_CHANGED: {
- filter->set_right_icon(get_editor_theme_icon(SNAME("Search")));
- for (TextureRect *trect : valid_type_icons) {
- trect->set_custom_minimum_size(Vector2(get_theme_constant(SNAME("class_icon_size"), EditorStringName(Editor)), 0));
- trect->set_texture(trect->get_meta("icon"));
- }
+ _update_valid_type_icons();
} break;
case NOTIFICATION_EXIT_TREE: {
@@ -1768,6 +1773,14 @@ void SceneTreeDialog::_notification(int p_what) {
}
}
+void SceneTreeDialog::_update_valid_type_icons() {
+ filter->set_right_icon(get_editor_theme_icon(SNAME("Search")));
+ for (TextureRect *trect : valid_type_icons) {
+ trect->set_custom_minimum_size(Vector2(get_theme_constant(SNAME("class_icon_size"), EditorStringName(Editor)), 0));
+ trect->set_texture(trect->get_meta("icon"));
+ }
+}
+
void SceneTreeDialog::_cancel() {
hide();
}