Commit: 31943d13134675abca4c1c35a86ffe2fe3f89af5
Author: Campbell Barton
Date:   Tue Dec 6 20:49:38 2022 +1100
Branches: master
https://developer.blender.org/rB31943d13134675abca4c1c35a86ffe2fe3f89af5

Fix T102937: "view3d.view_roll" operator conflicts with RMB invocation

When RMB is used to start the operator, don't use it for canceling.

===================================================================

M       source/blender/editors/space_view3d/view3d_navigate_roll.c

===================================================================

diff --git a/source/blender/editors/space_view3d/view3d_navigate_roll.c 
b/source/blender/editors/space_view3d/view3d_navigate_roll.c
index af93aa50238..5a6a3ef1fa6 100644
--- a/source/blender/editors/space_view3d/view3d_navigate_roll.c
+++ b/source/blender/editors/space_view3d/view3d_navigate_roll.c
@@ -106,16 +106,22 @@ static int viewroll_modal(bContext *C, wmOperator *op, 
const wmEvent *event)
         break;
     }
   }
-  else if (ELEM(event->type, EVT_ESCKEY, RIGHTMOUSE)) {
-    /* Note this does not remove auto-keys on locked cameras. */
-    copy_qt_qt(vod->rv3d->viewquat, vod->init.quat);
-    ED_view3d_camera_lock_sync(vod->depsgraph, vod->v3d, vod->rv3d);
-    viewops_data_free(C, op->customdata);
-    op->customdata = NULL;
-    return OPERATOR_CANCELLED;
+  else if (event->type == vod->init.event_type) {
+    /* Check `vod->init.event_type` first in case RMB was used to invoke.
+     * in this case confirming takes precedence over canceling, see: T102937. 
*/
+    if (event->val == KM_RELEASE) {
+      event_code = VIEW_CONFIRM;
+    }
   }
-  else if (event->type == vod->init.event_type && event->val == KM_RELEASE) {
-    event_code = VIEW_CONFIRM;
+  else if (ELEM(event->type, EVT_ESCKEY, RIGHTMOUSE)) {
+    if (event->val == KM_PRESS) {
+      /* Note this does not remove auto-keys on locked cameras. */
+      copy_qt_qt(vod->rv3d->viewquat, vod->init.quat);
+      ED_view3d_camera_lock_sync(vod->depsgraph, vod->v3d, vod->rv3d);
+      viewops_data_free(C, op->customdata);
+      op->customdata = NULL;
+      return OPERATOR_CANCELLED;
+    }
   }
 
   if (event_code == VIEW_APPLY) {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to