From f7ca47c2b3403412bde7da37a69bd56a5a13d1c0 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Sun, 23 Mar 2025 13:39:38 +0800 Subject: [PATCH] FIX: select base printer preset when deleting custom preset Change-Id: If69a58d486fc7a98ae4a0242dd9d345e8d3cf940 Jira: STUDIO-11013 --- src/slic3r/GUI/Tab.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 20c713e6c..196019a51 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -4838,14 +4838,19 @@ bool Tab::select_preset( const std::deque &presets = m_presets->get_presets(); size_t idx_current = m_presets->get_idx_selected(); // Find the next visible preset. - size_t idx_new = idx_current + 1; - if (idx_new < presets.size()) - for (; idx_new < presets.size() && ! presets[idx_new].is_visible; ++ idx_new) ; - if (idx_new == presets.size()) - for (idx_new = idx_current - 1; idx_new > 0 && ! presets[idx_new].is_visible; -- idx_new); - preset_name = presets[idx_new].name; - BOOST_LOG_TRIVIAL(info) << boost::format("cause by delete current ,choose the next visible, idx %1%, name %2%") - %idx_new %preset_name; + preset_name = presets[idx_current].inherits(); + if (preset_name.empty()) { + size_t idx_new = idx_current + 1; + if (idx_new < presets.size()) + for (; idx_new < presets.size() && ! presets[idx_new].is_visible; ++ idx_new) ; + if (idx_new == presets.size()) + for (idx_new = idx_current - 1; idx_new > 0 && ! presets[idx_new].is_visible; -- idx_new); + preset_name = presets[idx_new].name; + BOOST_LOG_TRIVIAL(info) << boost::format("cause by delete current ,choose the next visible, idx %1%, name %2%") + %idx_new %preset_name; + } else { + BOOST_LOG_TRIVIAL(info) << boost::format("cause by delete current ,choose base, name %1%") % preset_name; + } } else { //BBS select first visible item first const std::deque &presets = this->m_presets->get_presets();