diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 1d8463e92..a616307ba 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -1182,20 +1182,23 @@ void ObjectList::delete_from_model_and_list(const ItemType type, const int obj_i void ObjectList::delete_from_model_and_list(const std::vector& items_for_delete) { - for (auto& item : items_for_delete) + if (items_for_delete.empty()) + return; + + for (std::vector::const_reverse_iterator item = items_for_delete.rbegin(); item != items_for_delete.rend(); ++item) { - if ( !(item.type&(itObject|itVolume|itInstance)) ) + if (!(item->type&(itObject | itVolume | itInstance))) continue; - if (item.type&itObject) { - del_object(item.obj_idx); - m_objects_model->Delete(m_objects_model->GetItemById(item.obj_idx)); + if (item->type&itObject) { + del_object(item->obj_idx); + m_objects_model->Delete(m_objects_model->GetItemById(item->obj_idx)); } else { - del_subobject_from_object(item.obj_idx, item.sub_obj_idx, item.type); - if (item.type&itVolume) - m_objects_model->Delete(m_objects_model->GetItemByVolumeId(item.obj_idx, item.sub_obj_idx)); + del_subobject_from_object(item->obj_idx, item->sub_obj_idx, item->type); + if (item->type&itVolume) + m_objects_model->Delete(m_objects_model->GetItemByVolumeId(item->obj_idx, item->sub_obj_idx)); else - m_objects_model->Delete(m_objects_model->GetItemByInstanceId(item.obj_idx, item.sub_obj_idx)); + m_objects_model->Delete(m_objects_model->GetItemByInstanceId(item->obj_idx, item->sub_obj_idx)); } } part_selection_changed(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 3715843fb..b141b7a6b 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -1470,6 +1470,8 @@ void Plater::priv::remove(size_t obj_idx) void Plater::priv::delete_object_from_model(size_t obj_idx) { model.delete_object(obj_idx); + object_list_changed(); + update(); } void Plater::priv::reset()