diff options
author | Julian Eisel <eiseljulian@gmail.com> | 2016-07-28 03:23:32 +0300 |
---|---|---|
committer | Julian Eisel <eiseljulian@gmail.com> | 2016-07-28 03:27:39 +0300 |
commit | c59b21feec3056d208eb068346eaedd52a40bec7 (patch) | |
tree | ba8319abe8d064816a5678f5fa881a641bc7a33a /source | |
parent | b645e7081d2bcc92108d4f6b3a97f84b20855650 (diff) |
Fix own mistake from c05363e8895
Didn't know slink->regionbase is removed when area is active. Don't see why this is done, but it's confusing :S
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/editors/space_view3d/space_view3d.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index a588ba7221b..075b1faf502 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -1400,7 +1400,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes return -1; /* found but not available */ } -static void view3d_id_remap(ScrArea *UNUSED(sa), SpaceLink *slink, ID *old_id, ID *new_id) +static void view3d_id_remap(ScrArea *sa, SpaceLink *slink, ID *old_id, ID *new_id) { View3D *v3d; ARegion *ar; @@ -1414,8 +1414,9 @@ static void view3d_id_remap(ScrArea *UNUSED(sa), SpaceLink *slink, ID *old_id, I if ((ID *)v3d->camera == old_id) { v3d->camera = (Object *)new_id; if (!new_id) { - /* use v3d->regionbase as sa->regionbase is from active area, 3D view might be inactive though */ - for (ar = v3d->regionbase.first; ar; ar = ar->next) { + /* 3D view might be inactive, in that case needs to use slink->regionbase */ + ListBase *regionbase = (slink == sa->spacedata.first) ? &sa->regionbase : &slink->regionbase; + for (ar = regionbase->first; ar; ar = ar->next) { if (ar->regiontype == RGN_TYPE_WINDOW) { RegionView3D *rv3d = is_local ? ((RegionView3D *)ar->regiondata)->localvd : ar->regiondata; if (rv3d && (rv3d->persp == RV3D_CAMOB)) { |