Fix T98230: Automatic Constraint doesn't work if cursor is not moving
The change was kind of intentional on {rB21e72496a629}. That commit made mouse movement to "select" the contraint in Auto Constraint a requirement. This deduplicated the code a bit, but this requirement is not comfortable for the first "selection" of the contraint. So the constraint "selection" is now done in two ways: - If there is no contraint, the "selection" is done immediately; - If there is already a constraint, the "selection" is delayed by 1 event to simulate a constraint cancellation if there is no mouse movement.
This commit is contained in:
parent
2d5b91d6a0
commit
bc6965cb98
Notes:
blender-bot
2023-02-14 01:35:49 +01:00
Referenced by issue #98230, Regression: Automatic Constraint doesn't work if cursor is not moving
|
@ -1172,12 +1172,20 @@ int transformEvent(TransInfo *t, const wmEvent *event)
|
|||
MOD_CONSTRAINT_SELECT_PLANE;
|
||||
if (t->con.mode & CON_APPLY) {
|
||||
stopConstraint(t);
|
||||
}
|
||||
initSelectConstraint(t);
|
||||
|
||||
initSelectConstraint(t);
|
||||
/* Use #TREDRAW_SOFT so that #selectConstraint is only called on the next event.
|
||||
* This allows us to "deselect" the constraint. */
|
||||
t->redraw = TREDRAW_SOFT;
|
||||
/* In this case we might just want to remove the contraint,
|
||||
* so set #TREDRAW_SOFT to only select the constraint on the next mouse move event.
|
||||
* This way we can kind of "cancel" due to confirmation without constraint. */
|
||||
t->redraw = TREDRAW_SOFT;
|
||||
}
|
||||
else {
|
||||
initSelectConstraint(t);
|
||||
|
||||
/* When first called, set #TREDRAW_HARD to select constraint immediately in
|
||||
* #selectConstraint. */
|
||||
BLI_assert(t->redraw == TREDRAW_HARD);
|
||||
}
|
||||
}
|
||||
}
|
||||
handled = true;
|
||||
|
|
Loading…
Reference in New Issue