diff options
author | supermerill <merill@free.fr> | 2022-09-10 02:48:48 +0300 |
---|---|---|
committer | supermerill <merill@free.fr> | 2022-09-16 17:29:14 +0300 |
commit | 884e0fd548763c8cf406b8ec8a993d5aed748e47 (patch) | |
tree | fc1ae374cada5d353ad7d91f01eb99f9265d9a61 | |
parent | 3466946cc267946c90202a3984508f68481b2e69 (diff) |
Fix gui not refreshing for 'single extruder mmu' tab
supermerill/SuperSlicer#3176
-rw-r--r-- | src/slic3r/GUI/Tab.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index bccdefea1..5391c20fb 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -1804,7 +1804,12 @@ std::vector<Slic3r::GUI::PageShp> Tab::create_pages(std::string setting_type_nam // Otherwise, boost::any_cast<size_t> causes an "unhandled unknown exception" if (opt_key == "extruders_count" || opt_key == "single_extruder_multi_material") { size_t extruders_count = size_t(boost::any_cast<int>(current_group->get_value("extruders_count"))); - tab->extruders_count_changed(extruders_count); + if (opt_key == "extruders_count") { + tab->extruders_count_changed(extruders_count); + } else if (opt_key == "single_extruder_multi_material") { + tab->build_unregular_pages(false); + wxGetApp().sidebar().update_objects_list_extruder_column(extruders_count); + } init_options_list(); // m_options_list should be updated before UI updating update_dirty(); if (opt_key == "single_extruder_multi_material") { // the single_extruder_multimaterial was added to force pages @@ -3144,8 +3149,7 @@ void TabPrinter::build_unregular_pages(bool from_initial_build/* = false*/) n_before_extruders++; // kinematic page is always here - if (m_extruders_count_old == m_extruders_count || - (m_has_single_extruder_MM_page && m_extruders_count == 1)) + if (m_has_single_extruder_MM_page && (!m_config->opt_bool("single_extruder_multi_material") || m_extruders_count == 1)) { // if we have a single extruder MM setup, add a page with configuration options: for (size_t i = 0; i < m_pages.size(); ++i) // first make sure it's not there already @@ -3175,11 +3179,12 @@ void TabPrinter::build_unregular_pages(bool from_initial_build/* = false*/) page->clear(); } else { m_pages.insert(m_pages.begin() + n_before_extruders, page); - n_before_extruders++; m_has_single_extruder_MM_page = true; } changed = true; } + if(m_has_single_extruder_MM_page) + n_before_extruders++; // Build missed extruder pages for (size_t extruder_idx = m_extruders_count_old; extruder_idx < m_extruders_count; ++extruder_idx) { |