Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGermano Cavalcante <germano.costa@ig.com.br>2022-05-19 18:21:03 +0300
committerGermano Cavalcante <germano.costa@ig.com.br>2022-05-19 18:22:30 +0300
commitbc6965cb981e12855354bbdcf5dcdd5edff3ff4a (patch)
tree8464fd363929a09dec2d34f770279b90b8ac0f45
parent2d5b91d6a0f7470dd475721ea038c061513090d7 (diff)
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.
-rw-r--r--source/blender/editors/transform/transform.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 7a2a2a8a5e8..7ae041f2b2f 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -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);
+
+ /* 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);
- 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;
+ /* When first called, set #TREDRAW_HARD to select constraint immediately in
+ * #selectConstraint. */
+ BLI_assert(t->redraw == TREDRAW_HARD);
+ }
}
}
handled = true;