Fix (unreported) disapearance of some overrides after save & reload.

The override operations generated from 'do not follow' RNA pointer
properties (i.e. pointers to other IDs) were not properly clearing their
'no more used' flag, and hence were incorrectly deleted on second save.
This commit is contained in:
Bastien Montagne 2020-06-10 16:13:50 +02:00
parent 3ea04d3e11
commit 1d0017089c
1 changed files with 17 additions and 13 deletions

View File

@ -1294,19 +1294,23 @@ static int rna_property_override_diff_propptr(Main *bmain,
override, rna_path, &created);
/* If not yet overridden, or if we are handling sub-items (inside a collection)... */
if (op != NULL && (created || rna_itemname_a != NULL || rna_itemname_b != NULL ||
rna_itemindex_a != -1 || rna_itemindex_b != -1)) {
BKE_lib_override_library_property_operation_get(op,
IDOVERRIDE_LIBRARY_OP_REPLACE,
rna_itemname_b,
rna_itemname_a,
rna_itemindex_b,
rna_itemindex_a,
true,
NULL,
&created);
if (r_override_changed) {
*r_override_changed = created;
if (op != NULL) {
BKE_lib_override_library_operations_tag(op, IDOVERRIDE_LIBRARY_TAG_UNUSED, false);
if (created || rna_itemname_a != NULL || rna_itemname_b != NULL ||
rna_itemindex_a != -1 || rna_itemindex_b != -1) {
BKE_lib_override_library_property_operation_get(op,
IDOVERRIDE_LIBRARY_OP_REPLACE,
rna_itemname_b,
rna_itemname_a,
rna_itemindex_b,
rna_itemindex_a,
true,
NULL,
&created);
if (r_override_changed) {
*r_override_changed = created;
}
}
}
}