[Bf-blender-cvs] [080de5d7e70] temp-library-overrides-outliner: Merge branch 'master' into temp-library-overrides-outliner

Julian Eisel noreply at git.blender.org
Thu Mar 3 17:44:23 CET 2022


Commit: 080de5d7e7056117833ed529584abf619939e434
Author: Julian Eisel
Date:   Thu Mar 3 17:34:13 2022 +0100
Branches: temp-library-overrides-outliner
https://developer.blender.org/rB080de5d7e7056117833ed529584abf619939e434

Merge branch 'master' into temp-library-overrides-outliner

===================================================================



===================================================================

diff --cc source/blender/editors/space_outliner/tree/tree_element_overrides.cc
index 97279df560e,64c390d29b3..548e6bd73dc
--- a/source/blender/editors/space_outliner/tree/tree_element_overrides.cc
+++ b/source/blender/editors/space_outliner/tree/tree_element_overrides.cc
@@@ -38,66 -38,9 +38,66 @@@ TreeElementOverridesBase::TreeElementOv
    }
  }
  
 +static void expand_from_rna_path(SpaceOutliner &space_outliner,
 +                                 TreeElement &path_root_te,
 +                                 TreeElementOverridesData &override_data,
 +                                 int *index)
 +{
 +  PointerRNA idpoin;
 +  RNA_id_pointer_create(&override_data.id, &idpoin);
 +
 +  TreeElement *parent_to_expand = &path_root_te;
 +
 +  ListBase path_elems{nullptr};
 +  RNA_path_resolve_elements(&idpoin, override_data.override_property.rna_path, &path_elems);
 +
 +  /* Iterate the properties represented by the path. */
 +  LISTBASE_FOREACH (PropertyElemRNA *, prop_ptr_from_path, &path_elems) {
 +    /* Create containers for all items that are not leafs (i.e. that are not simple properties, but
 +     * may contain child properties). */
 +    if (prop_ptr_from_path->next) {
 +      PropertyPointerRNA property_and_ptr = {prop_ptr_from_path->ptr, prop_ptr_from_path->prop};
 +      TreeElement *container_te = outliner_add_element(&space_outliner,
 +                                                       &parent_to_expand->subtree,
 +                                                       &property_and_ptr,
 +                                                       parent_to_expand,
 +                                                       TSE_LIBRARY_OVERRIDE_RNA_CONTAINER,
 +                                                       *index++);
 +
 +      parent_to_expand = container_te;
 +      /* Iterate over the children the container item expanded, and continue building the path for
 +       * the item that matches the current path segment. */
 +      LISTBASE_FOREACH (TreeElement *, container_item_te, &container_te->subtree) {
 +        if (auto *col_item_te = tree_element_cast<TreeElementOverrideRNACollectionItem>(
 +                container_item_te)) {
 +          /* Does the collection item RNA pointer match the RNA pointer of the next property in the
 +           * path? */
 +          if (col_item_te->item_ptr.data == prop_ptr_from_path->next->ptr.data) {
 +            parent_to_expand = &col_item_te->getLegacyElement();
 +          }
 +        }
 +      }
 +
 +      continue;
 +    }
 +
 +    /* The actually overridden property. Must be a "leaf" property (end of the path). */
 +    BLI_assert(prop_ptr_from_path->next == nullptr);
 +    /* The actual override. */
 +    outliner_add_element(&space_outliner,
 +                         &parent_to_expand->subtree,
 +                         &override_data,
 +                         parent_to_expand,
 +                         TSE_LIBRARY_OVERRIDE,
 +                         *index++);
 +  }
 +
 +  BLI_freelistN(&path_elems);
 +}
 +
  void TreeElementOverridesBase::expand(SpaceOutliner &space_outliner) const
  {
-   BLI_assert(id_.override_library != nullptr);
+   BLI_assert(id.override_library != nullptr);
  
    const bool show_system_overrides = (SUPPORT_FILTER_OUTLINER(&space_outliner) &&
                                        (space_outliner.filter & SO_FILTER_SHOW_SYSTEM_OVERRIDES) !=
@@@ -107,10 -50,10 +107,10 @@@
  
    PointerRNA override_rna_ptr;
    PropertyRNA *override_rna_prop;
 -  short index = 0;
 +  int index = 0;
  
 -  for (auto *override_prop :
 +  for (IDOverrideLibraryProperty *override_prop :
-        ListBaseWrapper<IDOverrideLibraryProperty>(id_.override_library->properties)) {
+        ListBaseWrapper<IDOverrideLibraryProperty>(id.override_library->properties)) {
      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 &&
@@@ -130,9 -73,9 +130,9 @@@
        }
      }
  
 -    TreeElementOverridesData data = {id, *override_prop, is_rna_path_valid};
 -    outliner_add_element(
 -        &space_outliner, &legacy_te_.subtree, &data, &legacy_te_, TSE_LIBRARY_OVERRIDE, index++);
 +    TreeElementOverridesData override_data = {
-         id_, *override_prop, override_rna_ptr, *override_rna_prop, is_rna_path_valid};
++        id, *override_prop, override_rna_ptr, *override_rna_prop, is_rna_path_valid};
 +    expand_from_rna_path(space_outliner, legacy_te_, override_data, &index);
    }
  }



More information about the Bf-blender-cvs mailing list