From 7b65803cb377b61062475efe20bb6b2ccb4e2f4e Mon Sep 17 00:00:00 2001 From: bubnikv Date: Fri, 22 Feb 2019 16:16:04 +0100 Subject: [PATCH] Fix of SPE-832 Workaround for a wxWidget bug, where the mouse down event comes before mouse enter event after a pop-up menu is closed. --- src/slic3r/GUI/GLCanvas3D.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index d48b6ea61..c6d465ad2 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -4755,15 +4755,22 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) evt.SetY(evt.GetY() * scale); #endif + Point pos(evt.GetX(), evt.GetY()); + #if ENABLE_IMGUI - auto imgui = wxGetApp().imgui(); + ImGuiWrapper *imgui = wxGetApp().imgui(); if (imgui->update_mouse_data(evt)) { + m_mouse.position = evt.Leaving() ? Vec2d(-1.0, -1.0) : pos.cast(); render(); return; } #endif // ENABLE_IMGUI - Point pos(evt.GetX(), evt.GetY()); + if (! evt.Entering() && ! evt.Leaving() && m_mouse.position.x() == -1.0) { + // Workaround for SPE-832: There seems to be a mouse event sent to the window before evt.Entering() + m_mouse.position = pos.cast(); + render(); + } if (m_picking_enabled) _set_current();