Fix T91088: Assigning custom property value in python resets UI data
Assigning a new value to an IDProperty with the Python API would free the entire contents of the existing property, which unfortunately happened to include the UI data. The fix is to extract the UI data from the existing property before freeing its contents. An alternative would be adding another argument to `IDP_FreePropertyContent_ex`, but this solution is clearer and doesn't increase complexity elsewhere.
This commit is contained in:
parent
cfc674408e
commit
60fba8202c
Notes:
blender-bot
2023-02-14 11:42:40 +01:00
Referenced by issue #91088, Assigning value to custom property in python resets UI data
|
@ -714,8 +714,12 @@ bool BPy_IDProperty_Map_ValidateAndCreate(PyObject *name_obj, IDProperty *group,
|
|||
prop->next = prop_exist->next;
|
||||
prop->flag = prop_exist->flag;
|
||||
|
||||
/* Don't free and reset the existing property's UI data, since this only assigns a value. */
|
||||
IDPropertyUIData *ui_data = prop_exist->ui_data;
|
||||
prop_exist->ui_data = NULL;
|
||||
IDP_FreePropertyContent(prop_exist);
|
||||
*prop_exist = *prop;
|
||||
prop_exist->ui_data = ui_data;
|
||||
MEM_freeN(prop);
|
||||
}
|
||||
else {
|
||||
|
|
Loading…
Reference in New Issue