[Bf-blender-cvs] [a1ba57a] master: Fix T40010: Single user looses parent relationship (temporarily)
Campbell Barton
noreply at git.blender.org
Sun May 4 00:36:46 CEST 2014
Commit: a1ba57a008286e0ff213016be5173d30178107fa
Author: Campbell Barton
Date: Sun May 4 08:34:47 2014 +1000
https://developer.blender.org/rBa1ba57a008286e0ff213016be5173d30178107fa
Fix T40010: Single user looses parent relationship (temporarily)
===================================================================
M source/blender/editors/interface/interface_templates.c
M source/blender/editors/object/object_relations.c
===================================================================
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index 10b2542..72669d6 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -307,6 +307,7 @@ static void template_id_cb(bContext *C, void *arg_litem, void *arg_event)
Scene *scene = CTX_data_scene(C);
ED_object_single_user(bmain, scene, (struct Object *)id);
WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, scene);
+ DAG_relations_tag_update(bmain);
}
else {
if (id) {
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index c06592c..f7da53f 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -2284,24 +2284,32 @@ static int make_single_user_exec(bContext *C, wmOperator *op)
View3D *v3d = CTX_wm_view3d(C); /* ok if this is NULL */
int flag = RNA_enum_get(op->ptr, "type"); /* 0==ALL, SELECTED==selected objecs */
bool copy_groups = false;
+ bool update_deps = false;
BKE_main_id_clear_newpoins(bmain);
- if (RNA_boolean_get(op->ptr, "object"))
+ if (RNA_boolean_get(op->ptr, "object")) {
single_object_users(bmain, scene, v3d, flag, copy_groups);
- if (RNA_boolean_get(op->ptr, "obdata"))
+ /* needed since object relationships may have changed */
+ update_deps = true;
+ }
+
+ if (RNA_boolean_get(op->ptr, "obdata")) {
single_obdata_users(bmain, scene, flag);
+ }
- if (RNA_boolean_get(op->ptr, "material"))
+ if (RNA_boolean_get(op->ptr, "material")) {
single_mat_users(scene, flag, RNA_boolean_get(op->ptr, "texture"));
+ }
#if 0 /* can't do this separate from materials */
if (RNA_boolean_get(op->ptr, "texture"))
single_mat_users(scene, flag, true);
#endif
- if (RNA_boolean_get(op->ptr, "animation"))
+ if (RNA_boolean_get(op->ptr, "animation")) {
single_object_action_users(scene, flag);
+ }
/* TODO(sergey): This should not be needed, however some tool still could rely
* on the fact, that id->newid is kept NULL by default.
@@ -2311,6 +2319,11 @@ static int make_single_user_exec(bContext *C, wmOperator *op)
BKE_main_id_clear_newpoins(bmain);
WM_event_add_notifier(C, NC_WINDOW, NULL);
+
+ if (update_deps) {
+ DAG_relations_tag_update(bmain);
+ }
+
return OPERATOR_FINISHED;
}
More information about the Bf-blender-cvs
mailing list