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 e91d581167

Pull Request: https://projects.blender.org/blender/blender/pulls/147193
This commit is contained in:
Philipp Oeser
2025-10-06 10:57:49 +02:00
committed by Philipp Oeser
parent ceca413bcb
commit 23fcfa3e4c
2 changed files with 7 additions and 2 deletions

View File

@@ -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 {

View File

@@ -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 {