diff --git a/src/slic3r/GUI/ObjectDataViewModel.cpp b/src/slic3r/GUI/ObjectDataViewModel.cpp index 0ee35959a..2e9944906 100644 --- a/src/slic3r/GUI/ObjectDataViewModel.cpp +++ b/src/slic3r/GUI/ObjectDataViewModel.cpp @@ -1720,10 +1720,14 @@ wxDataViewItem ObjectDataViewModel::ReorganizeObjects( const int current_id, co return wxDataViewItem(nullptr); ObjectDataViewModelNode* deleted_node = m_objects[current_id]; + ObjectDataViewModelNode* plate_node = deleted_node->m_parent; + m_objects.erase(m_objects.begin() + current_id); + plate_node->GetChildren().Remove(deleted_node); ItemDeleted(wxDataViewItem(deleted_node->m_parent), wxDataViewItem(deleted_node)); m_objects.emplace(m_objects.begin() + new_id, deleted_node); + plate_node->Insert(deleted_node, new_id); ItemAdded(wxDataViewItem(deleted_node->m_parent), wxDataViewItem(deleted_node)); //ItemChanged(wxDataViewItem(nullptr)); @@ -1833,12 +1837,14 @@ unsigned int ObjectDataViewModel::GetChildren(const wxDataViewItem &parent, wxDa return 0; } - for (auto object : m_objects) + unsigned int count = node->GetChildren().GetCount(); + for (unsigned int pos = 0; pos < count; pos++) { - array.Add(wxDataViewItem((void*)object)); + ObjectDataViewModelNode* child = node->GetChildren().Item(pos); + array.Add(wxDataViewItem((void*)child)); } - return array.size(); + return count; } void ObjectDataViewModel::GetAllChildren(const wxDataViewItem &parent, wxDataViewItemArray &array) const