FIX: optimize batch update object list on macOS

Change-Id: I92e24cc53c0b3bf0658d15abc64292f0e17c0a82
Jira: STUDIO-5440 STUDIO-5515
This commit is contained in:
chunmao.guo 2023-12-21 15:52:30 +08:00 committed by Lane.Wei
parent adfcddd329
commit 860ea9b097

View File

@ -684,6 +684,9 @@ void ObjectList::update_filament_values_for_items(const size_t filaments_count)
void ObjectList::update_plate_values_for_items() void ObjectList::update_plate_values_for_items()
{ {
#ifdef __WXOSX__
AssociateModel(nullptr);
#endif
PartPlateList& list = wxGetApp().plater()->get_partplate_list(); PartPlateList& list = wxGetApp().plater()->get_partplate_list();
for (size_t i = 0; i < m_objects->size(); ++i) for (size_t i = 0; i < m_objects->size(); ++i)
{ {
@ -709,6 +712,9 @@ void ObjectList::update_plate_values_for_items()
Expand(item); Expand(item);
Select(item); Select(item);
} }
#ifdef __WXOSX__
AssociateModel(m_objects_model);
#endif
} }
// BBS // BBS
@ -3918,16 +3924,10 @@ void ObjectList::update_lock_icons_for_model()
void ObjectList::delete_all_objects_from_list() void ObjectList::delete_all_objects_from_list()
{ {
#ifdef __WXOSX__
AssociateModel(nullptr);
#endif
m_prevent_list_events = true; m_prevent_list_events = true;
reload_all_plates(); reload_all_plates();
m_prevent_list_events = false; m_prevent_list_events = false;
part_selection_changed(); part_selection_changed();
#ifdef __WXOSX__
AssociateModel(m_objects_model);
#endif
} }
void ObjectList::increase_object_instances(const size_t obj_idx, const size_t num) void ObjectList::increase_object_instances(const size_t obj_idx, const size_t num)
@ -5747,6 +5747,9 @@ void ObjectList::on_plate_deleted(int plate_idx)
void ObjectList::reload_all_plates(bool notify_partplate) void ObjectList::reload_all_plates(bool notify_partplate)
{ {
m_prevent_canvas_selection_update = true; m_prevent_canvas_selection_update = true;
#ifdef __WXOSX__
AssociateModel(nullptr);
#endif
// Unselect all objects before deleting them, so that no change of selection is emitted during deletion. // Unselect all objects before deleting them, so that no change of selection is emitted during deletion.
@ -5776,6 +5779,9 @@ void ObjectList::reload_all_plates(bool notify_partplate)
update_selections(); update_selections();
#ifdef __WXOSX__
AssociateModel(m_objects_model);
#endif
m_prevent_canvas_selection_update = false; m_prevent_canvas_selection_update = false;
// update scene // update scene