Merge branch 'blender-v3.1-release'

This commit is contained in:
Campbell Barton 2022-02-23 16:29:51 +11:00
commit 3c0fd287cb
2 changed files with 15 additions and 16 deletions

View File

@ -1038,9 +1038,6 @@ def _activate_by_item(context, space_type, item, index, *, as_fallback=False):
if props is None: if props is None:
print("Error:", gizmo_group, "could not access properties!") print("Error:", gizmo_group, "could not access properties!")
else: else:
for key in props.bl_rna.properties.keys():
props.property_unset(key)
gizmo_properties = item.widget_properties gizmo_properties = item.widget_properties
if gizmo_properties is not None: if gizmo_properties is not None:
if not isinstance(gizmo_properties, list): if not isinstance(gizmo_properties, list):

View File

@ -806,13 +806,25 @@ void WM_toolsystem_do_msg_notify_tag_refresh(bContext *C,
WM_toolsystem_refresh_screen_area(workspace, view_layer, area); WM_toolsystem_refresh_screen_area(workspace, view_layer, area);
} }
static IDProperty *idprops_ensure_named_group(IDProperty *group, const char *idname)
{
IDProperty *prop = IDP_GetPropertyFromGroup(group, idname);
if ((prop == NULL) || (prop->type != IDP_GROUP)) {
IDPropertyTemplate val = {0};
prop = IDP_New(IDP_GROUP, &val, __func__);
STRNCPY(prop->name, idname);
IDP_ReplaceInGroup_ex(group, prop, NULL);
}
return prop;
}
IDProperty *WM_toolsystem_ref_properties_ensure_idprops(bToolRef *tref) IDProperty *WM_toolsystem_ref_properties_ensure_idprops(bToolRef *tref)
{ {
if (tref->properties == NULL) { if (tref->properties == NULL) {
IDPropertyTemplate val = {0}; IDPropertyTemplate val = {0};
tref->properties = IDP_New(IDP_GROUP, &val, "wmOperatorProperties"); tref->properties = IDP_New(IDP_GROUP, &val, __func__);
} }
return tref->properties; return idprops_ensure_named_group(tref->properties, tref->idname);
} }
bool WM_toolsystem_ref_properties_get_ex(bToolRef *tref, bool WM_toolsystem_ref_properties_get_ex(bToolRef *tref,
@ -832,17 +844,7 @@ void WM_toolsystem_ref_properties_ensure_ex(bToolRef *tref,
PointerRNA *r_ptr) PointerRNA *r_ptr)
{ {
IDProperty *group = WM_toolsystem_ref_properties_ensure_idprops(tref); IDProperty *group = WM_toolsystem_ref_properties_ensure_idprops(tref);
IDProperty *prop = IDP_GetPropertyFromGroup(group, idname); IDProperty *prop = idprops_ensure_named_group(group, idname);
if (prop == NULL) {
IDPropertyTemplate val = {0};
prop = IDP_New(IDP_GROUP, &val, "wmGenericProperties");
STRNCPY(prop->name, idname);
IDP_ReplaceInGroup_ex(group, prop, NULL);
}
else {
BLI_assert(prop->type == IDP_GROUP);
}
RNA_pointer_create(NULL, type, prop, r_ptr); RNA_pointer_create(NULL, type, prop, r_ptr);
} }