From e0f80579935abdb26fc287cf499a0bd264cf2112 Mon Sep 17 00:00:00 2001 From: Sara Date: Mon, 8 Dec 2025 16:00:05 +0100 Subject: [PATCH] fix: layer index edits will reorder as expected --- modules/terrain_editor/primitive_layer_list.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/terrain_editor/primitive_layer_list.cpp b/modules/terrain_editor/primitive_layer_list.cpp index 15dccc81..9f9885fc 100644 --- a/modules/terrain_editor/primitive_layer_list.cpp +++ b/modules/terrain_editor/primitive_layer_list.cpp @@ -44,10 +44,13 @@ void PrimitiveLayerList::regenerate_tree(Array array) { } void PrimitiveLayerList::switch_index(size_t from, size_t to) { + if (to == from) { + return; + } Array primitives = this->terrain->get_primitives(); Ref primitive{ primitives.get(from) }; primitives.remove_at(from); - if (primitives.size() <= to) { + if (to > primitives.size()) { primitives.push_back(primitive); } else { primitives.insert(to, primitive); @@ -75,7 +78,7 @@ void PrimitiveLayerList::item_edited() { case IDX_COLUMN: { // index Callable switch_index_c{ callable_mp(this, &self_type::switch_index) }; int64_t from{ edited->get_index() }, - to{ edited->get_text(0).to_int() }; + to{ edited->get_text(IDX_COLUMN).to_int() }; EditHistory::get_singleton()->push_action(switch_index_c.bind(from, to), switch_index_c.bind(to, from)); return; }