diff --git a/lib/Slic3r/GUI/Plater/ObjectSettingsDialog.pm b/lib/Slic3r/GUI/Plater/ObjectSettingsDialog.pm index b97207c39..22d2f4ee4 100644 --- a/lib/Slic3r/GUI/Plater/ObjectSettingsDialog.pm +++ b/lib/Slic3r/GUI/Plater/ObjectSettingsDialog.pm @@ -132,7 +132,7 @@ sub update_optgroup { my ($opt_key) = @{$line->{options}}; # we assume that we have one option per line my $btn = Wx::BitmapButton->new($self, -1, Wx::Bitmap->new("$Slic3r::var/delete.png", wxBITMAP_TYPE_PNG)); EVT_BUTTON($self, $btn, sub { - delete $self->model_object->config->{$opt_key}; + $self->model_object->config->erase($opt_key); Slic3r::GUI->CallAfter(sub { $self->update_optgroup }); }); return $btn; diff --git a/xs/src/Config.cpp b/xs/src/Config.cpp index 20be9a3c2..b2783e357 100644 --- a/xs/src/Config.cpp +++ b/xs/src/Config.cpp @@ -289,6 +289,11 @@ DynamicConfig::keys(t_config_option_keys *keys) { keys->push_back(it->first); } +void +DynamicConfig::erase(const t_config_option_key opt_key) { + this->options.erase(opt_key); +} + void StaticConfig::keys(t_config_option_keys *keys) { for (t_optiondef_map::const_iterator it = this->def->begin(); it != this->def->end(); ++it) { diff --git a/xs/src/Config.hpp b/xs/src/Config.hpp index 71f945349..0e68437f4 100644 --- a/xs/src/Config.hpp +++ b/xs/src/Config.hpp @@ -430,6 +430,7 @@ class DynamicConfig : public ConfigBase ~DynamicConfig(); ConfigOption* option(const t_config_option_key opt_key, bool create = false); void keys(t_config_option_keys *keys); + void erase(const t_config_option_key opt_key); private: DynamicConfig(const DynamicConfig& other); // we disable this by making it private and unimplemented diff --git a/xs/xsp/Config.xsp b/xs/xsp/Config.xsp index 461f1cd89..3e1b07cd4 100644 --- a/xs/xsp/Config.xsp +++ b/xs/xsp/Config.xsp @@ -24,6 +24,7 @@ %code{% THIS->apply(*other, true); %}; std::vector get_keys() %code{% THIS->keys(&RETVAL); %}; + void erase(t_config_option_key opt_key); }; %name{Slic3r::Config::Print} class PrintConfig {