From fae52557cc04cc4c81a8278e5e80075d2e10e5ad Mon Sep 17 00:00:00 2001 From: YuSanka Date: Thu, 7 Nov 2024 14:14:46 +0100 Subject: [PATCH] Tab: Fixed update of extruders_filaments after filament renaming Fix for #13554 - Renaming a filament preset with parentheses causes incompatible profiles to appear (SPE-2556) --- src/slic3r/GUI/Tab.cpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index ff50474aaf..2d9ea78ce8 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -4404,6 +4404,13 @@ void Tab::rename_preset() assert(old_name == edited_preset.name); + if (m_type == Preset::TYPE_FILAMENT) { + // Filaments will be sorted inside collection after remaning, + // so, cache preset names for each extruder to reset them after renaming + m_preset_bundle->cache_extruder_filaments_names(); + } + + bool was_renamed = true; using namespace boost; try { // rename selected and edited presets @@ -4426,10 +4433,18 @@ void Tab::rename_preset() catch (const exception& ex) { const std::string exception = diagnostic_information(ex); printf("Can't rename a preset : %s", exception.c_str()); + was_renamed = false; } // sort presets after renaming std::sort(m_presets->begin(), m_presets->end()); + + if (was_renamed && m_type == Preset::TYPE_FILAMENT) { + // Reset extruder_filaments only if preset was renamed + m_preset_bundle->reset_extruder_filaments(); + // and update compatibility for extruders after reset + m_preset_bundle->update_filaments_compatible(PresetSelectCompatibleType::OnlyIfWasCompatible); + } // update selection select_preset_by_name(new_name, true);