From 2d7bfbb805b9e93a3d384b2b4e10f56bf2f33966 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Mon, 23 Mar 2015 21:48:31 +0100 Subject: [PATCH] Bugfix: dirty filament options were ignored when using multiple extruders. Patch by @markwal. #2740 --- lib/Slic3r/GUI/MainFrame.pm | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/Slic3r/GUI/MainFrame.pm b/lib/Slic3r/GUI/MainFrame.pm index 6e3256694..2154a9df9 100644 --- a/lib/Slic3r/GUI/MainFrame.pm +++ b/lib/Slic3r/GUI/MainFrame.pm @@ -635,13 +635,19 @@ sub config { if (!$self->{plater} || $self->{plater}->filament_presets == 1 || $self->{mode} eq 'simple') { $filament_config = $self->{options_tabs}{filament}->config; } else { - # TODO: handle dirty presets. - # perhaps plater shouldn't expose dirty presets at all in multi-extruder environments. my $i = -1; foreach my $preset_idx ($self->{plater}->filament_presets) { $i++; - my $preset = $self->{options_tabs}{filament}->get_preset($preset_idx); - my $config = $self->{options_tabs}{filament}->get_preset_config($preset); + my $config; + if ($preset_idx == $self->{options_tabs}{filament}->current_preset) { + # the selected preset for this extruder is the one in the tab + # use the tab's config instead of the preset in case it is dirty + # perhaps plater shouldn't expose dirty presets at all in multi-extruder environments. + $config = $self->{options_tabs}{filament}->config; + } else { + my $preset = $self->{options_tabs}{filament}->get_preset($preset_idx); + $config = $self->{options_tabs}{filament}->get_preset_config($preset); + } if (!$filament_config) { $filament_config = $config->clone; next;