diff --git a/src/slic3r/GUI/FilamentGroupPopup.hpp b/src/slic3r/GUI/FilamentGroupPopup.hpp index 09b6b8d344..e50c04317f 100644 --- a/src/slic3r/GUI/FilamentGroupPopup.hpp +++ b/src/slic3r/GUI/FilamentGroupPopup.hpp @@ -29,6 +29,7 @@ public: FilamentGroupPopup(wxWindow *parent); void tryPopup(Plater* plater,PartPlate* plate, bool slice_all); void tryClose(); + void Dismiss() override; FilamentMapMode GetSelectedMode() const { return m_mode; } private: @@ -40,7 +41,6 @@ private: void OnLeaveWindow(wxMouseEvent &); void OnEnterWindow(wxMouseEvent &); void OnTimer(wxTimerEvent &event); - void Dismiss(); void CreateBmps(); diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 84b702d7e5..bb5ffc87de 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -2309,6 +2309,12 @@ wxBoxSizer* MainFrame::create_side_tools() bool slice = true; + // The Slice-plate hover popup is a transient popup that keeps grabbing + // the mouse capture while shown. Left behind the modal grouping dialog it + // would starve that dialog of mouse events, so close it synchronously first. + if (m_filament_group_popup) + m_filament_group_popup->Dismiss(); + auto curr_plate = m_plater->get_partplate_list().get_curr_plate(); #ifdef __linux__ PresetBundle* preset = wxGetApp().preset_bundle;