diff options
author | Peter Kim <pk15950@gmail.com> | 2022-06-17 11:27:30 +0300 |
---|---|---|
committer | Peter Kim <pk15950@gmail.com> | 2022-06-17 11:27:30 +0300 |
commit | a39532670f6b668da7be5810fb1f844b82feeba3 (patch) | |
tree | 4d6a40f6c362ca1d9b7c7031527e6e54a62589e6 /source/blender/editors/space_outliner/tree/tree_element_overrides.cc | |
parent | 7948150ca3683dc326c37609ded322d54b832d0d (diff) | |
parent | 10981bc8c092dda48ed5228cc19108513035abf0 (diff) |
Merge branch 'master' into xr-dev
Diffstat (limited to 'source/blender/editors/space_outliner/tree/tree_element_overrides.cc')
-rw-r--r-- | source/blender/editors/space_outliner/tree/tree_element_overrides.cc | 39 |
1 files changed, 28 insertions, 11 deletions
diff --git a/source/blender/editors/space_outliner/tree/tree_element_overrides.cc b/source/blender/editors/space_outliner/tree/tree_element_overrides.cc index 53e7b88c923..871de39b1dd 100644 --- a/source/blender/editors/space_outliner/tree/tree_element_overrides.cc +++ b/source/blender/editors/space_outliner/tree/tree_element_overrides.cc @@ -67,21 +67,38 @@ void TreeElementOverridesBase::expand(SpaceOutliner &space_outliner) const for (auto *override_prop : ListBaseWrapper<IDOverrideLibraryProperty>(id.override_library->properties)) { + int rnaprop_index = 0; const bool is_rna_path_valid = BKE_lib_override_rna_property_find( - &idpoin, override_prop, &override_rna_ptr, &override_rna_prop); - if (is_rna_path_valid && !show_system_overrides && - ELEM(override_prop->rna_prop_type, PROP_POINTER, PROP_COLLECTION) && - RNA_struct_is_ID(RNA_property_pointer_type(&override_rna_ptr, override_rna_prop))) { - bool do_continue = true; - for (auto *override_prop_op : - ListBaseWrapper<IDOverrideLibraryPropertyOperation>(override_prop->operations)) { - if ((override_prop_op->flag & IDOVERRIDE_LIBRARY_FLAG_IDPOINTER_MATCH_REFERENCE) == 0) { - do_continue = false; - break; + &idpoin, override_prop, &override_rna_ptr, &override_rna_prop, &rnaprop_index); + + /* Check for conditions where the liboverride property should be considered as a system + * override, if needed. */ + if (is_rna_path_valid && !show_system_overrides) { + bool do_skip = true; + bool is_system_override = false; + + /* Matching ID pointers are considered as system overrides. */ + if (ELEM(override_prop->rna_prop_type, PROP_POINTER, PROP_COLLECTION) && + RNA_struct_is_ID(RNA_property_pointer_type(&override_rna_ptr, override_rna_prop))) { + for (auto *override_prop_op : + ListBaseWrapper<IDOverrideLibraryPropertyOperation>(override_prop->operations)) { + if ((override_prop_op->flag & IDOVERRIDE_LIBRARY_FLAG_IDPOINTER_MATCH_REFERENCE) == 0) { + do_skip = false; + break; + } + else { + is_system_override = true; + } } } - if (do_continue) { + /* Animated/driven properties are considered as system overrides. */ + if (!is_system_override && !BKE_lib_override_library_property_is_animated( + &id, override_prop, override_rna_prop, rnaprop_index)) { + do_skip = false; + } + + if (do_skip) { continue; } } |