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:
authorBastien Montagne <montagne29@wanadoo.fr>2019-01-30 22:32:28 +0300
committerBastien Montagne <montagne29@wanadoo.fr>2019-01-30 22:34:26 +0300
commitb21bd431e3a50c79d9db549254141fe7ffa311a7 (patch)
tree44bc1f0bcd9ed405f4ffd518f2a8c979fc4ec651 /source/blender
parentf4b1f1f0beece897df0a9013adf2253e89a85975 (diff)
Fix T60378: All armatures reset positions on linked collection when ctrl+z used on anything.
Issue actually exists since ages, probably 2.7x update system forced all armature proxies to be fully refreshed after an undo? In any case, proxy_from should only be reset for 'local' proxies (i.e. directly linked datablocks), not for linked proxies...
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenloader/intern/readfile.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 42f3c35034e..aaa7ea6da8c 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -1573,14 +1573,17 @@ static void change_idid_adr(ListBase *mainlist, FileData *basefd, void *old, voi
/* lib linked proxy objects point to our local data, we need
* to clear that pointer before reading the undo memfile since
* the object might be removed, it is set again in reading
- * if the local object still exists */
+ * if the local object still exists.
+ * This is only valid for local proxy objects though, linked ones should not be affected here.
+ */
void blo_clear_proxy_pointers_from_lib(Main *oldmain)
{
Object *ob = oldmain->object.first;
for (; ob; ob = ob->id.next) {
- if (ob->id.lib)
+ if (ob->id.lib != NULL && ob->proxy_from != NULL && ob->proxy_from->id.lib == NULL) {
ob->proxy_from = NULL;
+ }
}
}