diff options
author | Campbell Barton <ideasman42@gmail.com> | 2020-06-01 09:21:30 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2020-06-01 09:21:30 +0300 |
commit | 520f08aa56fcea1111ac8a6660cb0b428164d508 (patch) | |
tree | 09cf2831081b4448d6780834390222ecc2716794 /source | |
parent | f18ed7ad890ee5c89fc6e6a22e76c732fb5fc1bc (diff) |
Fix T77241: NDOF navigation doesn't work with the knife tool
Also allow NDOF with loop-cut.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/mesh/editmesh_knife.c | 1 | ||||
-rw-r--r-- | source/blender/editors/mesh/editmesh_loopcut.c | 23 |
2 files changed, 16 insertions, 8 deletions
diff --git a/source/blender/editors/mesh/editmesh_knife.c b/source/blender/editors/mesh/editmesh_knife.c index f94cd778e13..5f5599b53df 100644 --- a/source/blender/editors/mesh/editmesh_knife.c +++ b/source/blender/editors/mesh/editmesh_knife.c @@ -2998,6 +2998,7 @@ static int knifetool_modal(bContext *C, wmOperator *op, const wmEvent *event) case MOUSEROTATE: case WHEELUPMOUSE: case WHEELDOWNMOUSE: + case NDOF_MOTION: return OPERATOR_PASS_THROUGH; case MOUSEMOVE: /* mouse moved somewhere to select another loop */ if (kcd->mode != MODE_PANNING) { diff --git a/source/blender/editors/mesh/editmesh_loopcut.c b/source/blender/editors/mesh/editmesh_loopcut.c index 37bacb4af55..08bbe9ae0e7 100644 --- a/source/blender/editors/mesh/editmesh_loopcut.c +++ b/source/blender/editors/mesh/editmesh_loopcut.c @@ -514,6 +514,10 @@ static int loopcut_finish(RingSelOpData *lcd, bContext *C, wmOperator *op) static int loopcut_modal(bContext *C, wmOperator *op, const wmEvent *event) { + if (event->type == NDOF_MOTION) { + return OPERATOR_PASS_THROUGH; + } + RingSelOpData *lcd = op->customdata; float cuts = lcd->cuts; float smoothness = lcd->smoothness; @@ -605,7 +609,8 @@ static int loopcut_modal(bContext *C, wmOperator *op, const wmEvent *event) } handled = true; break; - case MOUSEMOVE: /* mouse moved somewhere to select another loop */ + case MOUSEMOVE: { + /* mouse moved somewhere to select another loop */ /* This is normally disabled for all modal operators. * This is an exception since mouse movement doesn't relate to numeric input. @@ -614,14 +619,16 @@ static int loopcut_modal(bContext *C, wmOperator *op, const wmEvent *event) #if 0 if (!has_numinput) #endif - { - lcd->vc.mval[0] = event->mval[0]; - lcd->vc.mval[1] = event->mval[1]; - loopcut_mouse_move(lcd, (int)lcd->cuts); + { + lcd->vc.mval[0] = event->mval[0]; + lcd->vc.mval[1] = event->mval[1]; + loopcut_mouse_move(lcd, (int)lcd->cuts); - ED_region_tag_redraw(lcd->region); - handled = true; - } break; + ED_region_tag_redraw(lcd->region); + handled = true; + } + break; + } } /* Modal numinput inactive, try to handle numeric inputs last... */ |