Normalize Weights: use valid default Subset for current context

For the Normalize Weights operator, dynamically set the default 'Subset'
parameter so that it is applicable to the current context.

When the user's last use of Normalize Weights was set to "Deform Pose
Bones", and then tries to use the operator on a mesh without armature,
Blender would try to use the previous opertor properties and show an
error message. This is resolved by switching to `WT_VGROUP_ACTIVE` in
such cases.

Reviewed By: zanqdo, sybren

Maniphest Tasks: T95038

Differential Revision: https://developer.blender.org/D14961
This commit is contained in:
Nate Rupsis 2022-06-30 12:53:56 +02:00 committed by Sybren A. Stüvel
parent 4a7e1c9209
commit 0f22b5599a
Notes: blender-bot 2023-02-14 05:16:25 +01:00
Referenced by issue #99453, Regression: Crash on calling menu search
Referenced by issue #95038, Change defaults for Normalize All Vertex Groups operator
1 changed files with 5 additions and 1 deletions

View File

@ -693,7 +693,7 @@ static const EnumPropertyItem WT_vertex_group_select_item[] = {
const EnumPropertyItem *ED_object_vgroup_selection_itemf_helper(const bContext *C,
PointerRNA *UNUSED(ptr),
PropertyRNA *UNUSED(prop),
PropertyRNA *prop,
bool *r_free,
const uint selection_mask)
{
@ -731,6 +731,10 @@ const EnumPropertyItem *ED_object_vgroup_selection_itemf_helper(const bContext *
RNA_enum_items_add_value(&item, &totitem, WT_vertex_group_select_item, WT_VGROUP_ALL);
}
/* Set `Deform Bone` as default selection if armature is present. */
RNA_def_property_enum_default(
prop, BKE_modifiers_is_deformed_by_armature(ob) ? WT_VGROUP_BONE_DEFORM : WT_VGROUP_ALL);
RNA_enum_item_end(&item, &totitem);
*r_free = true;