From 8df60acc61546d887e1c086f483c3aa9c377a185 Mon Sep 17 00:00:00 2001 From: "lane.wei" Date: Mon, 31 Oct 2022 21:22:03 +0800 Subject: [PATCH] FIX: fix the label switch incorrect issue when print_sequence change 1. only turn on label while switch from by_layer to by_object 2. don't crash when filament_colours mismatch between project_config and PresetBundle Change-Id: Icac9d0d7f88e17fcad3b042ea19cda3ac23ae62c --- src/slic3r/GUI/GUI_Factories.cpp | 6 +++++- src/slic3r/GUI/Plater.cpp | 5 ++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GUI_Factories.cpp b/src/slic3r/GUI/GUI_Factories.cpp index 5a3ff39590..6c842038e6 100644 --- a/src/slic3r/GUI/GUI_Factories.cpp +++ b/src/slic3r/GUI/GUI_Factories.cpp @@ -1333,7 +1333,7 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) menu->Destroy(item_id); } - const int filaments_cnt = filaments_count(); + int filaments_cnt = filaments_count(); if (filaments_cnt <= 1) return; @@ -1345,6 +1345,10 @@ void MenuFactory::append_menu_item_change_filament(wxMenu* menu) std::vector icons = get_extruder_color_icons(true); if (icons.size() < filaments_cnt) { BOOST_LOG_TRIVIAL(warning) << boost::format("Warning: icons size %1%, filaments_cnt=%2%")%icons.size()%filaments_cnt; + if (icons.size() <= 1) + return; + else + filaments_cnt = icons.size(); } wxMenu* extruder_selection_menu = new wxMenu(); const wxString& name = sels.Count() == 1 ? names[0] : names[1]; diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 5ad47eaaa3..c3398f38e3 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -9296,6 +9296,7 @@ void Plater::on_config_change(const DynamicPrintConfig &config) { bool update_scheduled = false; bool bed_shape_changed = false; + bool print_sequence_changed = false; t_config_option_keys diff_keys = p->config->diff(config); for (auto opt_key : diff_keys) { if (opt_key == "filament_colour") { @@ -9346,6 +9347,7 @@ void Plater::on_config_change(const DynamicPrintConfig &config) } else if (opt_key == "print_sequence") { update_scheduled = true; + print_sequence_changed = true; } else if (opt_key == "printer_model") { p->reset_gcode_toolpaths(); @@ -9371,7 +9373,8 @@ void Plater::on_config_change(const DynamicPrintConfig &config) std::string info_text = L("Print By Object: \nSuggest to use auto-arrange to avoid collisions when printing."); notify_manager->bbl_show_seqprintinfo_notification(info_text); //always show label when switch to sequence print - this->show_view3D_labels(true); + if (print_sequence_changed) + this->show_view3D_labels(true); } else notify_manager->bbl_close_seqprintinfo_notification();