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:
authorCampbell Barton <campbell@blender.org>2022-03-11 14:49:47 +0300
committerCampbell Barton <campbell@blender.org>2022-03-11 14:49:47 +0300
commit789b1617f70e07f1c9bcb5253f1233acacbf6c8a (patch)
treef8a67aab8e67b7b7a8a49e28416f0b0b647f1449 /source/blender/editors/transform
parente20fe187066cfb9b1847e656f0f9cef5c5bf7e73 (diff)
Fix out of order event handling when calling operators from gizmos
Activating a gizmo used the windows eventstate which may have values newer than the event used to activate the gizmo. This meant transforms check for the key that activated transform could be incorrect. Support passing an event when calling operators to avoid this problem.
Diffstat (limited to 'source/blender/editors/transform')
-rw-r--r--source/blender/editors/transform/transform_ops.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c
index 936aca7d2e0..efbb7375af4 100644
--- a/source/blender/editors/transform/transform_ops.c
+++ b/source/blender/editors/transform/transform_ops.c
@@ -1311,9 +1311,7 @@ static void TRANSFORM_OT_transform(struct wmOperatorType *ot)
P_ALIGN_SNAP | P_GPENCIL_EDIT | P_CENTER);
}
-static int transform_from_gizmo_invoke(bContext *C,
- wmOperator *UNUSED(op),
- const wmEvent *UNUSED(event))
+static int transform_from_gizmo_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *event)
{
bToolRef *tref = WM_toolsystem_ref_from_context(C);
if (tref) {
@@ -1343,7 +1341,7 @@ static int transform_from_gizmo_invoke(bContext *C,
PointerRNA op_ptr;
WM_operator_properties_create_ptr(&op_ptr, ot);
RNA_boolean_set(&op_ptr, "release_confirm", true);
- WM_operator_name_call_ptr(C, ot, WM_OP_INVOKE_DEFAULT, &op_ptr);
+ WM_operator_name_call_ptr(C, ot, WM_OP_INVOKE_DEFAULT, &op_ptr, event);
WM_operator_properties_free(&op_ptr);
return OPERATOR_FINISHED;
}