diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index c9ffbff18..e6a0c8ac4 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -456,7 +456,7 @@ void ConfigBase::apply_only(const ConfigBase &other, const t_config_option_keys auto my_opt2 = dynamic_cast(this->option(opt_key2)); auto other_opt = other.option(opt_key2); if (my_opt2 == nullptr && other_opt) - my_opt2 = dynamic_cast(other_opt->clone()); + my_opt2 = dynamic_cast(this->option(opt_key2, true)); if (my_opt2) { int index = std::atoi(opt_key.c_str() + n + 1); if (other_opt) diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 21633b5f4..ae16129d2 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -5222,6 +5222,8 @@ bool Tab::may_discard_current_dirty_preset(PresetCollection* presets /*= nullptr std::vector variant_options; for (auto &opt : cache_options) { if (auto n = opt.find('#'); n != std::string::npos) { + if (type == Preset::TYPE_FILAMENT && filament_options_with_variant.count(opt.substr(0, n)) == 0) + continue; variant_options.push_back(opt.substr(0, n)); opt.clear(); }