From 6948a60757eee4076aac56517982a7448f34e10c Mon Sep 17 00:00:00 2001 From: tao wang Date: Tue, 20 Feb 2024 14:13:19 +0800 Subject: [PATCH] FIX:fixed HMS message not cleared jira:[STUDIO-6296] Change-Id: Ic7692ce337fd00ece4ab8d65214a8c406f8543f8 --- src/slic3r/GUI/HMSPanel.cpp | 9 +++++++-- src/slic3r/GUI/HMSPanel.hpp | 3 +++ src/slic3r/GUI/Monitor.cpp | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) 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); }