diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 60fe66940..7ff539ac5 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -4747,7 +4747,7 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) if (preset_type == Preset::TYPE_FILAMENT) { wxGetApp().preset_bundle->set_filament_preset(idx, preset_name); - //wxGetApp().get_tab(preset_type)->select_preset(preset_name); + wxGetApp().plater()->update_project_dirty_from_presets(); } bool select_preset = !combo->selection_is_changed_according_to_physical_printers(); diff --git a/src/slic3r/GUI/ProjectDirtyStateManager.cpp b/src/slic3r/GUI/ProjectDirtyStateManager.cpp index 1f228f446..0db5e6f2d 100644 --- a/src/slic3r/GUI/ProjectDirtyStateManager.cpp +++ b/src/slic3r/GUI/ProjectDirtyStateManager.cpp @@ -30,7 +30,11 @@ void ProjectDirtyStateManager::update_from_presets() if (!app.plater()->get_project_filename().IsEmpty()) { for (const auto &[type, name] : app.get_selected_presets()) { if (type == Preset::Type::TYPE_FILAMENT) { - m_presets_dirty |= m_initial_filament_presets != wxGetApp().preset_bundle->filament_presets; + m_presets_dirty |= m_initial_filament_presets_names != wxGetApp().preset_bundle->filament_presets; + if (ConfigOption *color_option = wxGetApp().preset_bundle->project_config.option("filament_colour")) { + auto colors = static_cast(color_option->clone()); + m_presets_dirty |= m_initial_filament_presets_colors != colors->values; + } } else { m_presets_dirty |= !m_initial_presets[type].empty() && m_initial_presets[type] != name; } @@ -57,7 +61,11 @@ void ProjectDirtyStateManager::reset_initial_presets() GUI_App &app = wxGetApp(); for (const auto &[type, name] : app.get_selected_presets()) { if (type == Preset::Type::TYPE_FILAMENT) { - m_initial_filament_presets = wxGetApp().preset_bundle->filament_presets; + m_initial_filament_presets_names = wxGetApp().preset_bundle->filament_presets; + if (ConfigOption *color_option = wxGetApp().preset_bundle->project_config.option("filament_colour")) { + auto colors = static_cast(color_option->clone()); + m_initial_filament_presets_colors = colors->values; + } } else { m_initial_presets[type] = name; } diff --git a/src/slic3r/GUI/ProjectDirtyStateManager.hpp b/src/slic3r/GUI/ProjectDirtyStateManager.hpp index 203c87076..f17772199 100644 --- a/src/slic3r/GUI/ProjectDirtyStateManager.hpp +++ b/src/slic3r/GUI/ProjectDirtyStateManager.hpp @@ -33,7 +33,8 @@ private: DynamicPrintConfig m_initial_project_config; // filament preset independent of the m_initial_presets - std::vector m_initial_filament_presets; + std::vector m_initial_filament_presets_names; // all filament preset type name + std::vector m_initial_filament_presets_colors; // all filament preset color }; } // namespace GUI