From 9c402384acac8b1c0c3b2b5b551ec158a9a723f6 Mon Sep 17 00:00:00 2001 From: tao wang Date: Fri, 7 Apr 2023 17:43:37 +0800 Subject: [PATCH] FIX:fixed move wrong pos when amsmapping window popup first time Change-Id: I5a9830141ef897399097dc21e70bfddd5113bcff --- src/slic3r/GUI/AmsMappingPopup.cpp | 8 ++++++++ src/slic3r/GUI/AmsMappingPopup.hpp | 4 +++- src/slic3r/GUI/SelectMachine.cpp | 3 ++- 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/AmsMappingPopup.cpp b/src/slic3r/GUI/AmsMappingPopup.cpp index 390d89762..b5d09ff0c 100644 --- a/src/slic3r/GUI/AmsMappingPopup.cpp +++ b/src/slic3r/GUI/AmsMappingPopup.cpp @@ -273,6 +273,14 @@ void MaterialItem::doRender(wxDC &dc) SetSizer(m_sizer_main); Layout(); Fit(); + + Bind(wxEVT_SHOW, [this](wxShowEvent& e) { + if (e.IsShown() && m_parent_item) { + wxPoint pos = m_parent_item->ClientToScreen(wxPoint(0, 0)); + pos.y += m_parent_item->GetRect().height; + this->Move(pos); + } + }); } wxString AmsMapingPopup::format_text(wxString &m_msg) diff --git a/src/slic3r/GUI/AmsMappingPopup.hpp b/src/slic3r/GUI/AmsMappingPopup.hpp index 5fb5e0b6f..d1094a385 100644 --- a/src/slic3r/GUI/AmsMappingPopup.hpp +++ b/src/slic3r/GUI/AmsMappingPopup.hpp @@ -130,7 +130,6 @@ class AmsMapingPopup : public PopupWindow { public: AmsMapingPopup(wxWindow *parent); - wxString format_text(wxString &m_msg); ~AmsMapingPopup(){}; wxStaticText * m_warning_text{nullptr}; @@ -144,7 +143,9 @@ public: std::string m_tag_material; wxBoxSizer *m_sizer_main{nullptr}; wxBoxSizer *m_sizer_list{nullptr}; + wxWindow *m_parent_item{nullptr}; + wxString format_text(wxString &m_msg); void update_materials_list(std::vector list); void set_tag_texture(std::string texture); void update_ams_data(std::map amsList); @@ -156,6 +157,7 @@ public: virtual void OnDismiss() wxOVERRIDE; virtual bool ProcessLeftDown(wxMouseEvent &event) wxOVERRIDE; void paintEvent(wxPaintEvent &evt); + void set_parent_item(wxWindow* item) {m_parent_item = item;}; std::vector parse_ams_mapping(std::map amsList); }; diff --git a/src/slic3r/GUI/SelectMachine.cpp b/src/slic3r/GUI/SelectMachine.cpp index db90217aa..717e54176 100644 --- a/src/slic3r/GUI/SelectMachine.cpp +++ b/src/slic3r/GUI/SelectMachine.cpp @@ -3192,9 +3192,10 @@ void SelectMachineDialog::set_default() if (m_mapping_popup.IsShown()) return; wxPoint pos = item->ClientToScreen(wxPoint(0, 0)); pos.y += item->GetRect().height; - m_mapping_popup.Position(pos, wxSize(0, 0)); + m_mapping_popup.Move(pos); if (obj_ && obj_->has_ams() && ams_check->GetValue()) { + m_mapping_popup.set_parent_item(item); m_mapping_popup.set_current_filament_id(extruder); m_mapping_popup.set_tag_texture(materials[extruder]); m_mapping_popup.update_ams_data(obj_->amsList);