From 07b5e1bd8065da8fd6ec367791a31756c944043f Mon Sep 17 00:00:00 2001 From: Germano Cavalcante Date: Mon, 20 Nov 2023 11:09:16 -0300 Subject: [PATCH] Fix #115153: Snap Base in Camera View crashes Blender Snap to geometry is not supported when moving camera in camera view. This is because the camera would make jumps that would be difficult to predict and control. The same happens if Snap Base were supported. Therefore, disable Edit Snap Base when transforming camera into camera view. --- source/blender/editors/transform/transform.cc | 4 ++++ .../blender/editors/transform/transform_mode_snapsource.cc | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/source/blender/editors/transform/transform.cc b/source/blender/editors/transform/transform.cc index 0a353784da5..f2f40e6cec6 100644 --- a/source/blender/editors/transform/transform.cc +++ b/source/blender/editors/transform/transform.cc @@ -707,6 +707,10 @@ static bool transform_modal_item_poll(const wmOperator *op, int value) /* More modes can be added over time if this feature proves useful for them. */ return false; } + if (t->options & CTX_CAMERA) { + /* Not supported. */ + return false; + } break; } case TFM_MODAL_PASSTHROUGH_NAVIGATE: diff --git a/source/blender/editors/transform/transform_mode_snapsource.cc b/source/blender/editors/transform/transform_mode_snapsource.cc index 8d5b6eac68f..50ba21b2f6c 100644 --- a/source/blender/editors/transform/transform_mode_snapsource.cc +++ b/source/blender/editors/transform/transform_mode_snapsource.cc @@ -165,6 +165,12 @@ void transform_mode_snap_source_init(TransInfo *t, wmOperator * /*op*/) return; } + if (t->tsnap.snap_target_fn) { + /* A `snap_target_fn` is required for the operation to work. + * `snap_target_fn` can be `nullptr` when transforming camera in camera view. */ + return; + } + if (ELEM(t->mode, TFM_INIT, TFM_DUMMY)) { /* Fallback */ transform_mode_init(t, nullptr, TFM_TRANSLATION);