diff --git a/src/slic3r/GUI/HMSPanel.cpp b/src/slic3r/GUI/HMSPanel.cpp index 98bba43f7..fbe462e1b 100644 --- a/src/slic3r/GUI/HMSPanel.cpp +++ b/src/slic3r/GUI/HMSPanel.cpp @@ -201,6 +201,11 @@ void HMSPanel::delete_hms_panels() { m_scrolledWindow->DestroyChildren(); } +void HMSPanel::clear_hms_tag() +{ + temp_hms_list.clear(); +} + void HMSPanel::update(MachineObject *obj) { if (obj) { @@ -219,7 +224,7 @@ void HMSPanel::update(MachineObject *obj) append_hms_panel(item); } } - + for (auto thms : temp_hms_list) { auto key = thms.second.get_long_error_code(); auto inr = false; @@ -229,7 +234,7 @@ void HMSPanel::update(MachineObject *obj) break; } } - + if (!inr) { temp_hms_list.erase(key); } diff --git a/src/slic3r/GUI/HMSPanel.hpp b/src/slic3r/GUI/HMSPanel.hpp index 5733fcd59..bafa043a6 100644 --- a/src/slic3r/GUI/HMSPanel.hpp +++ b/src/slic3r/GUI/HMSPanel.hpp @@ -52,6 +52,7 @@ protected: void append_hms_panel(HMSItem &item); void delete_hms_panels(); + public: HMSPanel(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint &pos = wxDefaultPosition, const wxSize &size = wxDefaultSize, long style = wxTAB_TRAVERSAL); ~HMSPanel(); @@ -64,6 +65,8 @@ public: void show_status(int status); + void clear_hms_tag(); + MachineObject *obj { nullptr }; std::map temp_hms_list; }; diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index c28c2d104..122844e1d 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -302,6 +302,10 @@ void MonitorPanel::on_update_all(wxMouseEvent &event) Slic3r::DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!dev) return; + if ( (dev->get_selected_machine()->dev_id != event.GetString().ToStdString()) && m_hms_panel) { + m_hms_panel->clear_hms_tag(); + } + if (!dev->set_selected_machine(event.GetString().ToStdString())) return; @@ -412,7 +416,7 @@ void MonitorPanel::update_all() m_status_info_panel->update(obj); } - if (m_hms_panel->IsShown()) { + if (m_hms_panel->IsShown() || obj->hms_list.size() > 0) { m_hms_panel->update(obj); }