diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp index 9eebd583e9..96259792b3 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.cpp @@ -269,13 +269,24 @@ void GLGizmoCut::on_render() #endif // !ENABLE_GL_CORE_PROFILE } -#if !ENABLE_RAYCAST_PICKING - void GLGizmoCut::on_render_for_picking() +#if ENABLE_RAYCAST_PICKING +void GLGizmoCut::on_register_raycasters_for_picking() +{ + // the gizmo grabbers are rendered on top of the scene, so the raytraced picker should take it into account + m_parent.set_raycaster_gizmos_on_top(true); +} + +void GLGizmoCut::on_unregister_raycasters_for_picking() +{ + m_parent.set_raycaster_gizmos_on_top(false); +} +#else +void GLGizmoCut::on_render_for_picking() { glsafe(::glDisable(GL_DEPTH_TEST)); render_grabbers_for_picking(m_parent.get_selection().get_bounding_box()); } -#endif // !ENABLE_RAYCAST_PICKING +#endif // ENABLE_RAYCAST_PICKING void GLGizmoCut::on_render_input_window(float x, float y, float bottom_limit) { diff --git a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp index 6283d9e310..ee3bc78e9a 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoCut.hpp @@ -68,9 +68,12 @@ protected: virtual void on_start_dragging() override; virtual void on_dragging(const UpdateData& data) override; virtual void on_render() override; -#if !ENABLE_RAYCAST_PICKING +#if ENABLE_RAYCAST_PICKING + virtual void on_register_raycasters_for_picking() override; + virtual void on_unregister_raycasters_for_picking() override; +#else virtual void on_render_for_picking() override; -#endif // !ENABLE_RAYCAST_PICKING +#endif // ENABLE_RAYCAST_PICKING virtual void on_render_input_window(float x, float y, float bottom_limit) override; private: diff --git a/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp b/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp index 775aa4ceda..0f68cb7619 100644 --- a/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp +++ b/src/slic3r/GUI/Gizmos/GLGizmoScale.cpp @@ -654,9 +654,7 @@ void GLGizmoScale3D::on_unregister_raycasters_for_picking() { m_parent.set_raycaster_gizmos_on_top(false); } -#endif // ENABLE_RAYCAST_PICKING - -#if !ENABLE_RAYCAST_PICKING +#else void GLGizmoScale3D::on_render_for_picking() { glsafe(::glDisable(GL_DEPTH_TEST));