fix: layer index edits will reorder as expected
This commit is contained in:
parent
59b5237342
commit
e0f8057993
|
|
@ -44,10 +44,13 @@ void PrimitiveLayerList::regenerate_tree(Array array) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void PrimitiveLayerList::switch_index(size_t from, size_t to) {
|
void PrimitiveLayerList::switch_index(size_t from, size_t to) {
|
||||||
|
if (to == from) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
Array primitives = this->terrain->get_primitives();
|
Array primitives = this->terrain->get_primitives();
|
||||||
Ref<TerrainPrimitive> primitive{ primitives.get(from) };
|
Ref<TerrainPrimitive> primitive{ primitives.get(from) };
|
||||||
primitives.remove_at(from);
|
primitives.remove_at(from);
|
||||||
if (primitives.size() <= to) {
|
if (to > primitives.size()) {
|
||||||
primitives.push_back(primitive);
|
primitives.push_back(primitive);
|
||||||
} else {
|
} else {
|
||||||
primitives.insert(to, primitive);
|
primitives.insert(to, primitive);
|
||||||
|
|
@ -75,7 +78,7 @@ void PrimitiveLayerList::item_edited() {
|
||||||
case IDX_COLUMN: { // index
|
case IDX_COLUMN: { // index
|
||||||
Callable switch_index_c{ callable_mp(this, &self_type::switch_index) };
|
Callable switch_index_c{ callable_mp(this, &self_type::switch_index) };
|
||||||
int64_t from{ edited->get_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));
|
EditHistory::get_singleton()->push_action(switch_index_c.bind(from, to), switch_index_c.bind(to, from));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue