Commit: 9c341153a2b64f2f845f921612556e9433702ee0
Author: Bastien Montagne
Date:   Thu Jan 27 17:51:07 2022 +0100
Branches: master
https://developer.blender.org/rB9c341153a2b64f2f845f921612556e9433702ee0

Fix T95062: Outliner Library Overrides not refreshed when removing overrides.

Those operations were missing the necessary notification for the
Outliner. This was also affecting RNA API of liboverrides.

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

M       source/blender/editors/interface/interface_ops.c
M       source/blender/makesrna/intern/rna_ID.c

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

diff --git a/source/blender/editors/interface/interface_ops.c 
b/source/blender/editors/interface/interface_ops.c
index f7424066ad8..33c6e382f50 100644
--- a/source/blender/editors/interface/interface_ops.c
+++ b/source/blender/editors/interface/interface_ops.c
@@ -597,6 +597,9 @@ static int override_type_set_button_exec(bContext *C, 
wmOperator *op)
     opop->operation = operation;
   }
 
+  /* Outliner e.g. has to be aware of this change. */
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
+
   return operator_button_property_finish(C, &ptr, prop);
 }
 
@@ -714,6 +717,9 @@ static int override_remove_button_exec(bContext *C, 
wmOperator *op)
     }
   }
 
+  /* Outliner e.g. has to be aware of this change. */
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
+
   return operator_button_property_finish(C, &ptr, prop);
 }
 
diff --git a/source/blender/makesrna/intern/rna_ID.c 
b/source/blender/makesrna/intern/rna_ID.c
index 264e89b2c2d..1ae036a254e 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -704,6 +704,7 @@ static ID *rna_ID_override_create(ID *id, Main *bmain, bool 
remap_local_usages)
   }
 
   WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
 
   return local_id;
 }
@@ -721,6 +722,7 @@ static ID *rna_ID_override_hierarchy_create(
   BKE_lib_override_library_create(bmain, scene, view_layer, id, id_reference, 
&id_root_override);
 
   WM_main_add_notifier(NC_ID | NA_ADDED, NULL);
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
 
   return id_root_override;
 }
@@ -741,6 +743,8 @@ static void rna_ID_override_template_create(ID *id, 
ReportList *reports)
     return;
   }
   BKE_lib_override_library_template_create(id);
+
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
 }
 
 static void rna_ID_override_library_operations_update(ID *id,
@@ -754,6 +758,8 @@ static void rna_ID_override_library_operations_update(ID 
*id,
   }
 
   BKE_lib_override_library_operations_create(bmain, id);
+
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
 }
 
 static void rna_ID_override_library_reset(ID *id,
@@ -773,6 +779,8 @@ static void rna_ID_override_library_reset(ID *id,
   else {
     BKE_lib_override_library_id_reset(bmain, id);
   }
+
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
 }
 
 static void rna_ID_override_library_destroy(ID *id,
@@ -793,6 +801,8 @@ static void rna_ID_override_library_destroy(ID *id,
     BKE_libblock_remap(bmain, id, id->override_library->reference, 
ID_REMAP_SKIP_INDIRECT_USAGE);
     BKE_id_delete(bmain, id);
   }
+
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
 }
 
 static IDOverrideLibraryProperty *rna_ID_override_library_properties_add(
@@ -806,6 +816,7 @@ static IDOverrideLibraryProperty 
*rna_ID_override_library_properties_add(
     BKE_report(reports, RPT_DEBUG, "No new override property created, property 
already exists");
   }
 
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
   return result;
 }
 
@@ -819,6 +830,8 @@ static void 
rna_ID_override_library_properties_remove(IDOverrideLibrary *overrid
   }
 
   BKE_lib_override_library_property_delete(override_library, 
override_property);
+
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
 }
 
 static IDOverrideLibraryPropertyOperation 
*rna_ID_override_library_property_operations_add(
@@ -845,6 +858,8 @@ static IDOverrideLibraryPropertyOperation 
*rna_ID_override_library_property_oper
   if (!created) {
     BKE_report(reports, RPT_DEBUG, "No new override operation created, 
operation already exists");
   }
+
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
   return result;
 }
 
@@ -859,6 +874,8 @@ static void 
rna_ID_override_library_property_operations_remove(
   }
 
   BKE_lib_override_library_property_operation_delete(override_property, 
override_operation);
+
+  WM_main_add_notifier(NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
 }
 
 static void rna_ID_update_tag(ID *id, Main *bmain, ReportList *reports, int 
flag)
@@ -1747,6 +1764,7 @@ static void 
rna_def_ID_override_library_property(BlenderRNA *brna)
                             "IDOverrideLibraryPropertyOperation",
                             "Operations",
                             "List of overriding operations for a property");
+  RNA_def_property_update(prop, NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
   rna_def_ID_override_library_property_operations(brna, prop);
 
   rna_def_ID_override_library_property_operation(brna);
@@ -1799,8 +1817,9 @@ static void rna_def_ID_override_library(BlenderRNA *brna)
   RNA_def_struct_ui_text(
       srna, "ID Library Override", "Struct gathering all data needed by 
overridden linked IDs");
 
-  RNA_def_pointer(
+  prop = RNA_def_pointer(
       srna, "reference", "ID", "Reference ID", "Linked ID used as reference by 
this override");
+  RNA_def_property_update(prop, NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
 
   prop = RNA_def_boolean(srna,
                          "is_in_hierarchy",
@@ -1808,6 +1827,7 @@ static void rna_def_ID_override_library(BlenderRNA *brna)
                          "Is In Hierarchy",
                          "Whether this library override is defined as part of 
a library "
                          "hierarchy, or as a single, isolated and autonomous 
override");
+  RNA_def_property_update(prop, NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
   RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", 
IDOVERRIDE_LIBRARY_FLAG_NO_HIERARCHY);
 
   prop = RNA_def_collection(srna,
@@ -1815,6 +1835,7 @@ static void rna_def_ID_override_library(BlenderRNA *brna)
                             "IDOverrideLibraryProperty",
                             "Properties",
                             "List of overridden properties");
+  RNA_def_property_update(prop, NC_WM | ND_LIB_OVERRIDE_CHANGED, NULL);
   rna_def_ID_override_library_properties(brna, prop);
 
   /* Update function. */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
List details, subscription details or unsubscribe:
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to