From 8360bd24735073f5882ab014cd80a30d93238ebc Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Fri, 27 Sep 2024 19:49:21 +0800 Subject: [PATCH] FIX: Should not sync when machine types are inconsistent jira: none Change-Id: If769fe0d19fb06c4a70e616416bf28f194ebcd45 --- src/slic3r/GUI/Plater.cpp | 15 ++++++++++++++- src/slic3r/GUI/Plater.hpp | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index a1dfba5d8..824cf95ed 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2048,9 +2048,22 @@ void Sidebar::sync_extruder_list() p->sync_extruder_list(); } +bool Sidebar::should_sync_extruder_list(MachineObject *obj) +{ + if (obj && obj->is_connected() && obj->is_multi_extruders() && wxGetApp().plater()->is_multi_extruder_ams_empty()) { + std::string machine_print_name = obj->printer_type; + PresetBundle *preset_bundle = wxGetApp().preset_bundle; + std::string target_model_id = preset_bundle->printers.get_edited_preset().get_printer_type(preset_bundle); + if (machine_print_name == target_model_id) { + return true; + } + } + return false; +} + void Sidebar::load_ams_list(std::string const &device, MachineObject* obj) { - if (obj && obj->is_connected() && obj->is_multi_extruders() && wxGetApp().plater()->is_multi_extruder_ams_empty()) + if (should_sync_extruder_list(obj)) sync_extruder_list(); std::map filament_ams_list = build_filament_ams_list(obj); diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 1e0443cd9..69544d077 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -151,6 +151,7 @@ public: std::map build_filament_ams_list(MachineObject* obj); void sync_ams_list(); void sync_extruder_list(); + bool should_sync_extruder_list(MachineObject* obj); ObjectList* obj_list(); ObjectSettings* obj_settings();