From 6f7704470f88ac363aa0800ab7d272d5ed33e93d Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Mon, 9 Jun 2025 10:54:08 +0800 Subject: [PATCH] FIX: do not change others if mode not changed JIRA: [STUDIO-12375] Change-Id: I2ba64346706f22a6f143242c9236605de033754b (cherry picked from commit 7b031c1536440dad942d536c831e316c5c57e677) --- src/slic3r/GUI/Widgets/FanControl.cpp | 35 ++++++++++++++++++--------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/src/slic3r/GUI/Widgets/FanControl.cpp b/src/slic3r/GUI/Widgets/FanControl.cpp index cf7279d031..8be47af2cb 100644 --- a/src/slic3r/GUI/Widgets/FanControl.cpp +++ b/src/slic3r/GUI/Widgets/FanControl.cpp @@ -938,20 +938,31 @@ void FanControlPopupNew::paintEvent(wxPaintEvent& evt) void FanControlPopupNew::on_mode_changed(const wxMouseEvent &event) { - size_t btn_list_size = m_mode_switch_btn_list.size(); - for (size_t i = 0; i < btn_list_size; ++i) { - if (m_mode_switch_btn_list[i]->GetId() == event.GetId()) { - if (m_mode_switch_btn_list[i]->isSelected()) { return;} + /* go check*/ + if (m_obj && m_obj->is_in_printing()) + { + SendModeSwitchButton* btn = dynamic_cast (event.GetEventObject()); + if (btn && !btn->isSelected()) + { + MessageDialog msg_wingow(nullptr, _L("The selected material only supports the current fan mode, and it can't be changed during printing."), "", wxICON_WARNING | wxOK); + msg_wingow.ShowModal(); + return; + } + } - if (m_obj && m_obj->is_in_printing()) { - MessageDialog msg_wingow(nullptr, _L("The selected material only supports the current fan mode, and it can't be changed during printing."), "", wxICON_WARNING | wxOK); - msg_wingow.ShowModal(); - return; + /* update buttons*/ + for (size_t i = 0; i < m_mode_switch_btn_list.size(); ++i) + { + if (m_mode_switch_btn_list[i]->GetId() == event.GetId()) + { + if (!m_mode_switch_btn_list[i]->isSelected()) + { + m_mode_switch_btn_list[i]->setSelected(true); + command_control_air_duct(i); } - - m_mode_switch_btn_list[i]->setSelected(true); - command_control_air_duct(i); - } else { + } + else + { m_mode_switch_btn_list[i]->setSelected(false); } }