diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2019-01-30 22:32:28 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2019-01-30 22:34:26 +0300 |
commit | b21bd431e3a50c79d9db549254141fe7ffa311a7 (patch) | |
tree | 44bc1f0bcd9ed405f4ffd518f2a8c979fc4ec651 | |
parent | f4b1f1f0beece897df0a9013adf2253e89a85975 (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...
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 7 |
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; + } } } |