Fix T96035: Some tool settings do not work

Oversight in 74611e3555 missed updating
property access to use the tool identifier to lookup the property group.
This commit is contained in:
Campbell Barton 2022-03-01 23:06:01 +11:00
parent 629f22f161
commit d681d82d41
Notes: blender-bot 2024-01-31 11:35:08 +01:00
Referenced by issue #96035, Some tool settings do not work from the front UI
2 changed files with 14 additions and 3 deletions

View File

@ -117,6 +117,7 @@ void WM_toolsystem_do_msg_notify_tag_refresh(struct bContext *C,
struct wmMsgSubscribeKey *msg_key,
struct wmMsgSubscribeValue *msg_val);
struct IDProperty *WM_toolsystem_ref_properties_get_idprops(struct bToolRef *tref);
struct IDProperty *WM_toolsystem_ref_properties_ensure_idprops(struct bToolRef *tref);
void WM_toolsystem_ref_properties_ensure_ex(struct bToolRef *tref,
const char *idname,

View File

@ -830,6 +830,15 @@ static IDProperty *idprops_ensure_named_group(IDProperty *group, const char *idn
return prop;
}
IDProperty *WM_toolsystem_ref_properties_get_idprops(bToolRef *tref)
{
IDProperty *group = tref->properties;
if (group == NULL) {
return NULL;
}
return IDP_GetPropertyFromGroup(group, tref->idname);
}
IDProperty *WM_toolsystem_ref_properties_ensure_idprops(bToolRef *tref)
{
if (tref->properties == NULL) {
@ -844,7 +853,7 @@ bool WM_toolsystem_ref_properties_get_ex(bToolRef *tref,
StructRNA *type,
PointerRNA *r_ptr)
{
IDProperty *group = tref->properties;
IDProperty *group = WM_toolsystem_ref_properties_get_idprops(tref);
IDProperty *prop = group ? IDP_GetPropertyFromGroup(group, idname) : NULL;
RNA_pointer_create(NULL, type, prop, r_ptr);
return (prop != NULL);
@ -873,8 +882,9 @@ void WM_toolsystem_ref_properties_init_for_keymap(bToolRef *tref,
IDPropertyTemplate val = {0};
dst_ptr->data = IDP_New(IDP_GROUP, &val, "wmOpItemProp");
}
if (tref->properties != NULL) {
IDProperty *prop = IDP_GetPropertyFromGroup(tref->properties, ot->idname);
IDProperty *group = WM_toolsystem_ref_properties_get_idprops(tref);
if (group != NULL) {
IDProperty *prop = IDP_GetPropertyFromGroup(group, ot->idname);
if (prop) {
/* Important key-map items properties don't get overwritten by the tools.
* - When a key-map item doesn't set a property, the tool-systems is used.