diff --git a/src/slic3r/GUI/Field.cpp b/src/slic3r/GUI/Field.cpp index ca718e5e7..e8788715e 100644 --- a/src/slic3r/GUI/Field.cpp +++ b/src/slic3r/GUI/Field.cpp @@ -598,6 +598,10 @@ bool TextCtrl::value_was_changed() void TextCtrl::propagate_value() { + wxString val = dynamic_cast(window)->GetValue(); + if (m_opt.nullable && val != na_value()) + m_last_meaningful_value = val; + if (!is_defined_input_value(window, m_opt.type) ) // on_kill_focus() cause a call of OptionsGroup::reload_config(), // Thus, do it only when it's really needed (when undefined value was input) @@ -778,8 +782,12 @@ void SpinCtrl::BUILD() { case coInts: { default_value = m_opt.get_default_value()->get_at(m_opt_idx); - if (m_opt.nullable) - m_last_meaningful_value = default_value == ConfigOptionIntsNullable::nil_value() ? static_cast(m_opt.max) : default_value; + if (m_opt.nullable) { + if (default_value == ConfigOptionIntsNullable::nil_value()) + m_last_meaningful_value = m_opt.opt_key == "idle_temperature" ? 30 : static_cast(m_opt.max); + else + m_last_meaningful_value = default_value; + } break; } default: @@ -937,6 +945,9 @@ void SpinCtrl::propagate_value() if (boost::any_cast(m_value) == tmp_value) return; + if (m_opt.nullable && tmp_value != ConfigOptionIntsNullable::nil_value()) + m_last_meaningful_value = tmp_value; + if (tmp_value == UNDEF_VALUE) { on_kill_focus(); } else {