Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/blender/blenkernel/intern/object.c14
-rw-r--r--source/blender/makesdna/DNA_ID.h4
2 files changed, 12 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 6206696e109..ce064a78cff 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -1469,10 +1469,16 @@ void object_copy_proxy_drivers(Object *ob, Object *target)
/* all drivers */
DRIVER_TARGETS_LOOPER(dvar)
{
- if ((Object *)dtar->id == target)
- dtar->id= (ID *)ob;
- else
- id_lib_extern((ID *)dtar->id);
+ if(dtar->id) {
+ if ((Object *)dtar->id == target)
+ dtar->id= (ID *)ob;
+ else {
+ /* only on local objects because this causes indirect links a -> b -> c,blend to point directly to a.blend
+ * when a.blend has a proxy thats linked into c.blend */
+ if(ob->id.lib==NULL)
+ id_lib_extern((ID *)dtar->id);
+ }
+ }
}
DRIVER_TARGETS_LOOPER_END
}
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h
index 1eddbb26168..55b8374656a 100644
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@ -205,8 +205,8 @@ typedef struct PreviewImage {
#define LIB_EXTERN 1
#define LIB_INDIRECT 2
#define LIB_TEST 8
-#define LIB_TESTEXT 9
-#define LIB_TESTIND 10
+#define LIB_TESTEXT (LIB_TEST | LIB_EXTERN)
+#define LIB_TESTIND (LIB_TEST | LIB_INDIRECT)
#define LIB_READ 16
#define LIB_NEEDLINK 32