From f899d5a35d2f336a704d454a76b7bbce8d90a8cd Mon Sep 17 00:00:00 2001 From: Noisyfox Date: Tue, 26 May 2026 00:09:21 +0800 Subject: [PATCH] Fix issue that filament group popup is dismissed too quickly on macOS (#13837) --- src/slic3r/GUI/FilamentGroupPopup.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/FilamentGroupPopup.cpp b/src/slic3r/GUI/FilamentGroupPopup.cpp index 2cff9c3c82..a29e4537fb 100644 --- a/src/slic3r/GUI/FilamentGroupPopup.cpp +++ b/src/slic3r/GUI/FilamentGroupPopup.cpp @@ -338,7 +338,21 @@ void FilamentGroupPopup::OnRadioBtn(int idx) } } -void FilamentGroupPopup::OnTimer(wxTimerEvent &event) { Dismiss(); } +void FilamentGroupPopup::OnTimer(wxTimerEvent &event) +{ +#if __APPLE__ + // On macOS, when moving cursor from slice button to this popup window, + // the popup window entering event is triggered first, then the slice button + // leaving event got triggered. So the timer is stopped first, then started + // again, causing the popup being dismissed immediately. + // To fix this, we check if cursor is still inside the popup window before + // dismissing. + wxPoint pos = this->ScreenToClient(wxGetMousePosition()); + if (this->GetClientRect().Contains(pos)) return; +#endif + + Dismiss(); +} void FilamentGroupPopup::Dismiss() { m_active = false;