diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-11-10 08:22:35 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-11-10 08:25:58 +0300 |
commit | b902edae75c7087d08339fdf03d132341df1f277 (patch) | |
tree | 1d0a3e302048f5dd51ef676a531b486f0f58f297 /source | |
parent | f923b6faa9f44ba94aee33dfc656b8341ca548c1 (diff) |
Fix T65585: Knife fails when cursor away from the object
Zeroed mouse coordinates were being used making projection fail.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/mesh/editmesh_knife.c | 11 |
1 files 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. |