diff options
author | Bastien Montagne <bastien@blender.org> | 2020-04-21 13:55:40 +0300 |
---|---|---|
committer | Bastien Montagne <bastien@blender.org> | 2020-04-21 13:55:40 +0300 |
commit | 06a2ae281be53f7234b1778b9b06242fe54823f0 (patch) | |
tree | f1bd05cbe757ca1235b2c6a69ca0b0b8f1bc2715 /source/blender | |
parent | 49a29c9c76ce1ca8f87f042c2650cec50d13125d (diff) | |
parent | c73d6162be6437a76da94a36502770b440edc454 (diff) |
Merge branch 'blender-v2.83-release'
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index e644f932f35..6b59dfbd10b 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -9637,6 +9637,15 @@ static void read_libblock_undo_restore_at_old_address(FileData *fd, Main *main, const short idcode = GS(id->name); + /* XXX 3DCursor (witch is UI data and as such should not be affected by undo) is stored in + * Scene... So this requires some special handling, previously done in `blo_lib_link_restore()`, + * but this cannot work anymore when we overwrite existing memory... */ + if (idcode == ID_SCE) { + Scene *scene_old = (Scene *)id_old; + Scene *scene = (Scene *)id; + SWAP(View3DCursor, scene_old->cursor, scene->cursor); + } + Main *old_bmain = fd->old_mainlist->first; ListBase *old_lb = which_libbase(old_bmain, idcode); ListBase *new_lb = which_libbase(main, idcode); |