GUI_ObjectList.cpp: Fixed a crash when deleting instances.

Deleting second-but-last instance deletes the whole Instances node, we must select object node in that case.
This commit is contained in:
Lukas Matena 2019-09-04 15:15:35 +02:00
parent a48ba21f40
commit 326eb5e343

View file

@ -2500,12 +2500,15 @@ void ObjectList::remove()
auto delete_item = [this](wxDataViewItem item)
{
wxDataViewItem parent = m_objects_model->GetParent(item);
if (m_objects_model->GetItemType(item) & itObject)
ItemType type = m_objects_model->GetItemType(item);
if (type & itObject)
delete_from_model_and_list(itObject, m_objects_model->GetIdByItem(item), -1);
else {
if (m_objects_model->GetItemType(item) & itLayer) {
if (type & (itLayer | itInstance)) {
// In case there is just one layer or two instances and we delete it, del_subobject_item will
// also remove the parent item. Selection should therefore pass to the top parent (object).
wxDataViewItemArray children;
if (m_objects_model->GetChildren(parent, children) == 1)
if (m_objects_model->GetChildren(parent, children) == (type & itLayer ? 1 : 2))
parent = m_objects_model->GetTopParent(item);
}