From 2dadf4b5dc153f734d4b095d62d99224dc0502c7 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Wed, 9 Jan 2019 10:30:29 +0100 Subject: [PATCH] Fixed a crash after settings adding for the instance from the scene's context menu --- src/slic3r/GUI/GUI_ObjectList.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GUI_ObjectList.cpp b/src/slic3r/GUI/GUI_ObjectList.cpp index 729946dbf..bc54b2321 100644 --- a/src/slic3r/GUI/GUI_ObjectList.cpp +++ b/src/slic3r/GUI/GUI_ObjectList.cpp @@ -633,8 +633,10 @@ void ObjectList::get_settings_choice(const wxString& category_name) // Add settings item for object - const auto item = GetSelection(); + auto item = GetSelection(); if (item) { + if (m_objects_model->GetItemType(item) == itInstance) + item = m_objects_model->GetTopParent(item); const auto settings_item = m_objects_model->IsSettingsItem(item) ? item : m_objects_model->GetSettingsItem(item); select_item(settings_item ? settings_item : m_objects_model->AddSettingsChild(item)); @@ -903,7 +905,8 @@ void ObjectList::load_generic_subobject(const std::string& type_name, const int m_parts_changed = true; parts_changed(obj_idx); - select_item(m_objects_model->AddVolumeChild(GetSelection(), from_u8(name), type)); + const auto object_item = m_objects_model->GetTopParent(GetSelection()); + select_item(m_objects_model->AddVolumeChild(object_item, from_u8(name), type)); #ifndef __WXOSX__ //#ifdef __WXMSW__ // #ys_FIXME selection_changed(); #endif //no __WXOSX__ //__WXMSW__ @@ -1156,6 +1159,10 @@ void ObjectList::part_selection_changed() else if (m_objects_model->GetItemType(item) == itInstance) { og_name = _(L("Instance manipulation")); update_and_show_manipulations = true; + + // fill m_config by object's values + const int obj_idx_ = m_objects_model->GetObjectIdByItem(item); + m_config = &(*m_objects)[obj_idx_]->config; } }