From fb5a299a609c5b4bb4ba2101ee6047d3aabb99df Mon Sep 17 00:00:00 2001 From: kleonc <9283098+kleonc@users.noreply.github.com> Date: Mon, 3 Nov 2025 20:31:29 +0100 Subject: [PATCH] Fix TileSet editor crash on terrain pick in paint mode --- editor/inspector/editor_properties.cpp | 4 ++++ editor/inspector/editor_properties.h | 1 + editor/scene/2d/tiles/tile_data_editors.cpp | 2 +- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/editor/inspector/editor_properties.cpp b/editor/inspector/editor_properties.cpp index 4a3f2aebef4d..a7dd481e96ff 100644 --- a/editor/inspector/editor_properties.cpp +++ b/editor/inspector/editor_properties.cpp @@ -870,6 +870,10 @@ void EditorPropertyEnum::set_option_button_clip(bool p_enable) { options->set_clip_text(p_enable); } +OptionButton *EditorPropertyEnum::get_option_button() { + return options; +} + EditorPropertyEnum::EditorPropertyEnum() { options = memnew(OptionButton); options->set_clip_text(true); diff --git a/editor/inspector/editor_properties.h b/editor/inspector/editor_properties.h index 22b31453f2c6..e80fd911b7aa 100644 --- a/editor/inspector/editor_properties.h +++ b/editor/inspector/editor_properties.h @@ -272,6 +272,7 @@ class EditorPropertyEnum : public EditorProperty { void setup(const Vector &p_options); virtual void update_property() override; void set_option_button_clip(bool p_enable); + OptionButton *get_option_button(); // Hack to allow setting icons. EditorPropertyEnum(); }; diff --git a/editor/scene/2d/tiles/tile_data_editors.cpp b/editor/scene/2d/tiles/tile_data_editors.cpp index 479188bee4f7..ec9f49357bf2 100644 --- a/editor/scene/2d/tiles/tile_data_editors.cpp +++ b/editor/scene/2d/tiles/tile_data_editors.cpp @@ -1887,7 +1887,7 @@ void TileDataTerrainsEditor::_update_terrain_selector() { // Kind of a hack to set icons. // We could provide a way to modify that in the EditorProperty. - OptionButton *option_button = Object::cast_to(terrain_property_editor->get_child(0)); + OptionButton *option_button = terrain_property_editor->get_option_button(); for (int terrain = 0; terrain < tile_set->get_terrains_count(terrain_set); terrain++) { option_button->set_item_icon(terrain + 1, icons[terrain_set][terrain]); }