From 73cb82d8dbee63b2745f84b3f3362e68b39c10ae Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 15 Dec 2025 13:09:04 +0100 Subject: [PATCH] fix: inspector title updates with layer name --- modules/terrain_editor/layer_editor.cpp | 14 +++++++++++++- modules/terrain_editor/layer_editor.h | 3 +++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/modules/terrain_editor/layer_editor.cpp b/modules/terrain_editor/layer_editor.cpp index 18ef2526..86a3faa4 100644 --- a/modules/terrain_editor/layer_editor.cpp +++ b/modules/terrain_editor/layer_editor.cpp @@ -7,18 +7,30 @@ void LayerEditor::_bind_methods() { BIND_HPROPERTY(Variant::OBJECT, terrain, PROPERTY_HINT_NODE_TYPE, "TerrainMeshEditor"); } +void LayerEditor::_selected_changed() { + StringName const name{ this->selected->get_name() }; + this->current_inspector->set_name(name.is_empty() ? this->selected->get_class_name() : name); +} + void LayerEditor::deselect_current() { if (this->current_inspector) { + this->current_inspector->set_name("OutgoingInspector"); this->current_inspector->queue_free(); } + if (this->selected.is_valid()) { + this->selected->disconnect_changed(callable_mp(this, &self_type::_selected_changed)); + } this->current_inspector = nullptr; } void LayerEditor::select(Ref primitive) { deselect_current(); + this->selected = primitive; if (primitive.is_valid() && this->inspectors.has(primitive->get_class())) { + this->selected->connect_changed(callable_mp(this, &self_type::_selected_changed)); this->current_inspector = this->inspectors.get(primitive->get_class())->instantiate(); - this->current_inspector->set_name(primitive->get_name()); + StringName name{ primitive->get_name() }; + this->current_inspector->set_name(name.is_empty() ? primitive->get_class_name() : name); add_child(this->current_inspector); } } diff --git a/modules/terrain_editor/layer_editor.h b/modules/terrain_editor/layer_editor.h index 860e0649..cf302fc4 100644 --- a/modules/terrain_editor/layer_editor.h +++ b/modules/terrain_editor/layer_editor.h @@ -9,6 +9,8 @@ class LayerEditor : public TabContainer { static void _bind_methods(); protected: + void _selected_changed(); + public: void deselect_current(); void select(Ref primitive); @@ -18,6 +20,7 @@ public: TerrainMeshEditor *get_terrain() const; private: + Ref selected{}; HashMap> inspectors{}; Node *current_inspector{ nullptr }; TerrainMeshEditor *terrain{ nullptr };