From 23fcfa3e4cc5b7ce755ea330696b306a6358317b Mon Sep 17 00:00:00 2001 From: Philipp Oeser Date: Mon, 6 Oct 2025 10:57:49 +0200 Subject: [PATCH] Fix #147070: Proportional editing even when disabled in object mode This happened if proportional editing was enabled in editmode, not having an active object plus being in object mode. The transform system `convert_type_get` assumes `TransConvertType_Object` if we dont have an active view layer object. Corresponding code for proportional editing detection [in `initTransInfo` & `saveTransform`] wasnt though (it used `toolsettings` `proportional_edit` -- not `proportional_objects` -- in that case). This is now corrected. Probably caused by e91d5811676c Pull Request: https://projects.blender.org/blender/blender/pulls/147193 --- source/blender/editors/transform/transform.cc | 5 ++++- source/blender/editors/transform/transform_generics.cc | 4 +++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/source/blender/editors/transform/transform.cc b/source/blender/editors/transform/transform.cc index 5dc98d88dd5..34e80af9f6c 100644 --- a/source/blender/editors/transform/transform.cc +++ b/source/blender/editors/transform/transform.cc @@ -1732,6 +1732,7 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) { BKE_view_layer_synced_ensure(t->scene, t->view_layer); const Object *obact = BKE_view_layer_active_object_get(t->view_layer); + const eObjectMode object_mode = eObjectMode(obact ? obact->mode : OB_MODE_OBJECT); if (t->spacetype == SPACE_GRAPH) { ts->proportional_fcurve = use_prop_edit; @@ -1742,7 +1743,9 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op) else if (t->options & CTX_MASK) { ts->proportional_mask = use_prop_edit; } - else if (obact && obact->mode == OB_MODE_OBJECT) { + else if (object_mode == OB_MODE_OBJECT) { + /* No active object means #TransConvertType_Object [see #convert_type_get()], so use + * toolsetting for *object*. */ ts->proportional_objects = use_prop_edit; } else { diff --git a/source/blender/editors/transform/transform_generics.cc b/source/blender/editors/transform/transform_generics.cc index 22a4bddcd64..1c812ad4205 100644 --- a/source/blender/editors/transform/transform_generics.cc +++ b/source/blender/editors/transform/transform_generics.cc @@ -595,7 +595,9 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve else if (t->options & CTX_MASK) { use_prop_edit = ts->proportional_mask; } - else if (obact && obact->mode == OB_MODE_OBJECT) { + else if (object_mode == OB_MODE_OBJECT) { + /* No active object means #TransConvertType_Object [see #convert_type_get()], so use + * toolsetting for *object*. */ use_prop_edit = ts->proportional_objects; } else {