Fix T77241: NDOF navigation doesn't work with the knife tool

Also allow NDOF with loop-cut.
This commit is contained in:
2020-06-01 16:21:30 +10:00
parent f18ed7ad89
commit 520f08aa56
2 changed files with 16 additions and 8 deletions

View File

@@ -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) {

View File

@@ -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... */