[Bf-blender-cvs] [07341d7b321] master: Liboverride: Add rna array index return value to `BKE_lib_override_rna_property_find`.

Bastien Montagne noreply at git.blender.org
Fri Jun 10 16:12:56 CEST 2022


Commit: 07341d7b3215d1ad4029fffbb1550479da89ada1
Author: Bastien Montagne
Date:   Fri Jun 10 14:44:25 2022 +0200
Branches: master
https://developer.blender.org/rB07341d7b3215d1ad4029fffbb1550479da89ada1

Liboverride: Add rna array index return value to `BKE_lib_override_rna_property_find`.

Very useful e.g. for dealing with FCurves search.

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

M	source/blender/blenkernel/BKE_lib_override.h
M	source/blender/blenkernel/intern/lib_override.cc
M	source/blender/editors/space_outliner/tree/tree_element_overrides.cc

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

diff --git a/source/blender/blenkernel/BKE_lib_override.h b/source/blender/blenkernel/BKE_lib_override.h
index 86630a6ab44..533bfa6b0bc 100644
--- a/source/blender/blenkernel/BKE_lib_override.h
+++ b/source/blender/blenkernel/BKE_lib_override.h
@@ -281,11 +281,14 @@ void BKE_lib_override_library_property_delete(struct IDOverrideLibrary *override
  *
  * \param idpoin: Pointer to the override ID.
  * \param library_prop: The library override property to find the matching RNA property for.
+ * \param r_index: The RNA array flat index (i.e. flatened index in case of multi-dimensional array
+ * properties). See #RNA_path_resolve_full familly of functions for details.
  */
 bool BKE_lib_override_rna_property_find(struct PointerRNA *idpoin,
                                         const struct IDOverrideLibraryProperty *library_prop,
                                         struct PointerRNA *r_override_poin,
-                                        struct PropertyRNA **r_override_prop);
+                                        struct PropertyRNA **r_override_prop,
+                                        int *r_index);
 
 /**
  * Find override property operation from given sub-item(s), if it exists.
diff --git a/source/blender/blenkernel/intern/lib_override.cc b/source/blender/blenkernel/intern/lib_override.cc
index aa43ca94c99..56d0308a033 100644
--- a/source/blender/blenkernel/intern/lib_override.cc
+++ b/source/blender/blenkernel/intern/lib_override.cc
@@ -312,7 +312,6 @@ bool BKE_lib_override_library_is_user_edited(const ID *id)
 
 bool BKE_lib_override_library_is_system_defined(const Main *bmain, const ID *id)
 {
-
   if (ID_IS_OVERRIDE_LIBRARY(id)) {
     const ID *override_owner_id;
     lib_override_get(bmain, id, &override_owner_id);
@@ -2677,11 +2676,12 @@ IDOverrideLibraryProperty *BKE_lib_override_library_property_get(IDOverrideLibra
 bool BKE_lib_override_rna_property_find(PointerRNA *idpoin,
                                         const IDOverrideLibraryProperty *library_prop,
                                         PointerRNA *r_override_poin,
-                                        PropertyRNA **r_override_prop)
+                                        PropertyRNA **r_override_prop,
+                                        int *r_index)
 {
   BLI_assert(RNA_struct_is_ID(idpoin->type) && ID_IS_OVERRIDE_LIBRARY(idpoin->data));
-  return RNA_path_resolve_property(
-      idpoin, library_prop->rna_path, r_override_poin, r_override_prop);
+  return RNA_path_resolve_property_full(
+      idpoin, library_prop->rna_path, r_override_poin, r_override_prop, r_index);
 }
 
 void lib_override_library_property_copy(IDOverrideLibraryProperty *op_dst,
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..51ca2eff9ee 100644
--- a/source/blender/editors/space_outliner/tree/tree_element_overrides.cc
+++ b/source/blender/editors/space_outliner/tree/tree_element_overrides.cc
@@ -67,8 +67,10 @@ 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);
+        &idpoin, override_prop, &override_rna_ptr, &override_rna_prop, &rnaprop_index);
+
     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))) {



More information about the Bf-blender-cvs mailing list