Fix T93331: Gizmo tool options reset when switching tools
Drag Action was constantly resetting itself to "move". Solve this by storing the tool settings per tool and no longer clear gizmo properties when activating a new tool.
This commit is contained in:
parent
2746238dde
commit
74611e3555
|
@ -1054,9 +1054,6 @@ def _activate_by_item(context, space_type, item, index, *, as_fallback=False):
|
|||
if props is None:
|
||||
print("Error:", gizmo_group, "could not access properties!")
|
||||
else:
|
||||
for key in props.bl_rna.properties.keys():
|
||||
props.property_unset(key)
|
||||
|
||||
gizmo_properties = item.widget_properties
|
||||
if gizmo_properties is not None:
|
||||
if not isinstance(gizmo_properties, list):
|
||||
|
|
|
@ -818,13 +818,25 @@ void WM_toolsystem_do_msg_notify_tag_refresh(bContext *C,
|
|||
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)
|
||||
{
|
||||
if (tref->properties == NULL) {
|
||||
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,
|
||||
|
@ -844,17 +856,7 @@ void WM_toolsystem_ref_properties_ensure_ex(bToolRef *tref,
|
|||
PointerRNA *r_ptr)
|
||||
{
|
||||
IDProperty *group = WM_toolsystem_ref_properties_ensure_idprops(tref);
|
||||
IDProperty *prop = IDP_GetPropertyFromGroup(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);
|
||||
}
|
||||
|
||||
IDProperty *prop = idprops_ensure_named_group(group, idname);
|
||||
RNA_pointer_create(NULL, type, prop, r_ptr);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue