diff --git a/src/slic3r/GUI/GLCanvas3D.cpp b/src/slic3r/GUI/GLCanvas3D.cpp index 13e5bdaa6..f18b1e71c 100644 --- a/src/slic3r/GUI/GLCanvas3D.cpp +++ b/src/slic3r/GUI/GLCanvas3D.cpp @@ -1030,6 +1030,7 @@ GLCanvas3D::Mouse::Mouse() , left_down(false) , position(DBL_MAX, DBL_MAX) , scene_position(DBL_MAX, DBL_MAX, DBL_MAX) + , ignore_up_event(false) { } @@ -4618,6 +4619,10 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) m_toolbar_action_running = true; m_toolbar.do_action((unsigned int)toolbar_contains_mouse); } + else if (evt.LeftDClick() && (m_gizmos.get_current_type() != Gizmos::Undefined)) + { + m_mouse.ignore_up_event = true; + } else if (evt.LeftDown() || evt.RightDown()) { m_mouse.left_down = evt.LeftDown(); @@ -4817,18 +4822,6 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) break; } -// if (!volumes.empty()) -// { -// BoundingBoxf3 bb; -// for (const GLVolume* volume : volumes) -// { -// bb.merge(volume->transformed_bounding_box()); -// } -// const Vec3d& size = bb.size(); -// const Vec3d& scale = m_gizmos.get_scale(); -// post_event(Vec3dsEvent<2>(EVT_GLCANVAS_UPDATE_GEOMETRY, {size, scale})); -// } - m_dirty = true; } else if (evt.Dragging() && !gizmos_overlay_contains_mouse) @@ -4904,7 +4897,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) else if (evt.LeftUp() && !m_mouse.dragging && (m_hover_volume_id == -1) && !gizmos_overlay_contains_mouse && !m_gizmos.is_dragging() && !is_layers_editing_enabled()) { // deselect and propagate event through callback - if (m_picking_enabled && !m_toolbar_action_running) + if (m_picking_enabled && !m_toolbar_action_running && !m_mouse.ignore_up_event) { m_selection.clear(); m_selection.set_mode(Selection::Instance); @@ -4912,6 +4905,7 @@ void GLCanvas3D::on_mouse(wxMouseEvent& evt) post_event(SimpleEvent(EVT_GLCANVAS_OBJECT_SELECT)); _update_gizmos_data(); } + m_mouse.ignore_up_event = false; } else if (evt.LeftUp() && m_gizmos.is_dragging()) { diff --git a/src/slic3r/GUI/GLCanvas3D.hpp b/src/slic3r/GUI/GLCanvas3D.hpp index 8b19da866..837b83e8a 100644 --- a/src/slic3r/GUI/GLCanvas3D.hpp +++ b/src/slic3r/GUI/GLCanvas3D.hpp @@ -329,6 +329,7 @@ class GLCanvas3D Vec2d position; Vec3d scene_position; Drag drag; + bool ignore_up_event; Mouse();