From b902edae75c7087d08339fdf03d132341df1f277 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 10 Nov 2020 16:22:35 +1100 Subject: Fix T65585: Knife fails when cursor away from the object Zeroed mouse coordinates were being used making projection fail. --- source/blender/editors/mesh/editmesh_knife.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c index 0ab1c926189..f45f48e0e32 100644 --- a/source/blender/editors/mesh/editmesh_knife.c +++ b/source/blender/editors/mesh/editmesh_knife.c @@ -1903,8 +1903,15 @@ static BMFace *knife_find_closest_face(KnifeTool_OpData *kcd, if (!f) { if (kcd->is_interactive) { - /* Try to use back-buffer selection method if ray casting failed. */ - f = EDBM_face_find_nearest(&kcd->vc, &dist); + /* Try to use back-buffer selection method if ray casting failed. + * + * Apply the mouse coordinates to a copy of the view-context + * since we don't want to rely on this being set elsewhere. */ + ViewContext vc = kcd->vc; + vc.mval[0] = (int)kcd->curr.mval[0]; + vc.mval[1] = (int)kcd->curr.mval[1]; + + f = EDBM_face_find_nearest(&vc, &dist); /* cheat for now; just put in the origin instead * of a true coordinate on the face. -- cgit v1.2.3