Fix T78259: Proportional editing does not work in particle editing

This is a long-standing bug, possibly proportional editing never worked
in particle mode.

Some parameter definitions in the transform code are scattered and
sometimes duplicated.

Proportional editing is a parameter that depends only on the Convert
type and not `spacetype`, `CTX_` or `obedit_type`.
This commit is contained in:
2020-06-26 12:02:52 -03:00
parent e6e67da4ea
commit 5c48592ccd
2 changed files with 8 additions and 29 deletions

View File

@@ -1086,7 +1086,6 @@ void createTransData(bContext *C, TransInfo *t)
convert_type = TC_MBALL_VERTS;
}
else if (t->obedit_type == OB_ARMATURE) {
t->flag &= ~T_PROP_EDIT;
convert_type = TC_ARMATURE_VERTS;
}
}
@@ -1164,6 +1163,7 @@ void createTransData(bContext *C, TransInfo *t)
break;
case TC_ARMATURE_VERTS:
createTransArmatureVerts(t);
init_prop_edit = false;
break;
case TC_CURSOR_IMAGE:
createTransCursor_image(t);
@@ -1291,6 +1291,10 @@ void createTransData(bContext *C, TransInfo *t)
* and are still added into transform data. */
sort_trans_data_selected_first(t);
}
if (!init_prop_edit) {
t->flag &= ~T_PROP_EDIT;
}
}
BLI_assert((!(t->flag & T_EDIT)) == (!(t->obedit_type != -1)));

View File

@@ -650,34 +650,9 @@ void initTransInfo(bContext *C, TransInfo *t, wmOperator *op, const wmEvent *eve
t->flag |= initTransInfo_edit_pet_to_flag(proportional);
}
else {
/* use settings from scene only if modal */
if (t->flag & T_MODAL) {
if ((t->options & CTX_NO_PET) == 0) {
if (t->spacetype == SPACE_GRAPH) {
t->flag |= initTransInfo_edit_pet_to_flag(ts->proportional_fcurve);
}
else if (t->spacetype == SPACE_ACTION) {
t->flag |= initTransInfo_edit_pet_to_flag(ts->proportional_action);
}
else if (t->obedit_type != -1) {
t->flag |= initTransInfo_edit_pet_to_flag(ts->proportional_edit);
}
else if (t->options & CTX_GPENCIL_STROKES) {
t->flag |= initTransInfo_edit_pet_to_flag(ts->proportional_edit);
}
else if (t->options & CTX_MASK) {
if (ts->proportional_mask) {
t->flag |= T_PROP_EDIT;
if (ts->proportional_edit & PROP_EDIT_CONNECTED) {
t->flag |= T_PROP_CONNECTED;
}
}
}
else if (!(t->options & CTX_CURSOR) && ts->proportional_objects) {
t->flag |= T_PROP_EDIT;
}
}
/* Use settings from scene only if modal. */
if (t->flag & T_MODAL && (t->options & CTX_NO_PET) == 0) {
t->flag |= initTransInfo_edit_pet_to_flag(ts->proportional_edit);
}
}