ENH: merge all error when multi obj have empty layer

Change-Id: Iff091babff67050fe512a3cffe6cb2af0e91efa5

STUDIO-2540
(cherry picked from commit e23781245e3a6ae9bffcff869aa8991eb0298243)

Change-Id: Ia90ffa1244ef8a89c8d3007ca65b68439b09249b
This commit is contained in:
manch1n 2023-05-09 12:22:42 +08:00 committed by Lane.Wei
parent 81319b6a9e
commit 35d6b072d3
8 changed files with 73 additions and 26 deletions

View file

@ -5878,21 +5878,24 @@ void Plater::priv::on_process_completed(SlicingProcessCompletedEvent &evt)
// This bool stops showing export finished notification even when process_completed_with_error is false
bool has_error = false;
if (evt.error()) {
std::pair<std::string, size_t> message = evt.format_error_message();
auto message = evt.format_error_message();
if (evt.critical_error()) {
if (q->m_tracking_popup_menu) {
// We don't want to pop-up a message box when tracking a pop-up menu.
// We postpone the error message instead.
q->m_tracking_popup_menu_error_message = message.first;
} else {
show_error(q, message.first, message.second != 0);
show_error(q, message.first, message.second.size() != 0 && message.second[0] != 0);
notification_manager->set_slicing_progress_hidden();
}
} else {
ModelObject const *model_object = nullptr;
const PrintObject *print_object = this->background_process.m_fff_print->get_object(ObjectID(message.second));
if (print_object) model_object = print_object->model_object();
notification_manager->push_slicing_error_notification(message.first, model_object);
std::vector<const ModelObject *> ptrs;
for (auto oid : message.second)
{
const PrintObject *print_object = this->background_process.m_fff_print->get_object(ObjectID(oid));
if (print_object) { ptrs.push_back(print_object->model_object()); }
}
notification_manager->push_slicing_error_notification(message.first, ptrs);
}
if (evt.invalidate_plater())
{