diff options
author | Bastien Montagne <montagne29@wanadoo.fr> | 2016-07-14 16:38:41 +0300 |
---|---|---|
committer | Bastien Montagne <montagne29@wanadoo.fr> | 2016-07-14 19:33:12 +0300 |
commit | e7d4d661f34091bf04615e49820c6806db6fea54 (patch) | |
tree | c06dc2f3dcbe60f9dca9b5d1c687d98a9c3ceed2 /source/blender/blenkernel/intern | |
parent | 018d336cbd51a9e4b75f8270e90397d35192496f (diff) |
Cleanup/refactor: handle shapekeys exactly like 'owned' nodetrees in make_local process.
Diffstat (limited to 'source/blender/blenkernel/intern')
-rw-r--r-- | source/blender/blenkernel/intern/curve.c | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/lattice.c | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/library.c | 10 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/mesh.c | 3 |
4 files changed, 7 insertions, 12 deletions
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index 596890da24d..693e7eb0c80 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -233,9 +233,6 @@ void BKE_curve_make_local(Main *bmain, Curve *cu, const bool force_local) if (force_local || is_local) { if (!is_lib) { id_clear_lib_data(bmain, &cu->id); - if (cu->key) { - id_clear_lib_data(bmain, &cu->key->id); - } BKE_id_expand_local(&cu->id); } else { diff --git a/source/blender/blenkernel/intern/lattice.c b/source/blender/blenkernel/intern/lattice.c index 0babe1d317c..c2675fabe3b 100644 --- a/source/blender/blenkernel/intern/lattice.c +++ b/source/blender/blenkernel/intern/lattice.c @@ -348,9 +348,6 @@ void BKE_lattice_make_local(Main *bmain, Lattice *lt, const bool force_local) if (force_local || is_local) { if (!is_lib) { id_clear_lib_data(bmain, <->id); - if (lt->key) { - id_clear_lib_data(bmain, <->key->id); - } BKE_id_expand_local(<->id); } else { diff --git a/source/blender/blenkernel/intern/library.c b/source/blender/blenkernel/intern/library.c index f570066ed16..37f64ba148b 100644 --- a/source/blender/blenkernel/intern/library.c +++ b/source/blender/blenkernel/intern/library.c @@ -1470,6 +1470,7 @@ bool new_id(ListBase *lb, ID *id, const char *tname) void id_clear_lib_data_ex(Main *bmain, ID *id, bool id_in_mainlist) { bNodeTree *ntree = NULL; + Key *key = NULL; BKE_id_lib_local_paths(bmain, id->lib, id); @@ -1480,13 +1481,16 @@ void id_clear_lib_data_ex(Main *bmain, ID *id, bool id_in_mainlist) if (id_in_mainlist) new_id(which_libbase(bmain, GS(id->name)), id, NULL); - /* internal bNodeTree blocks inside ID types below - * also stores id->lib, make sure this stays in sync. - */ + /* Internal bNodeTree blocks inside datablocks also stores id->lib, make sure this stays in sync. */ if ((ntree = ntreeFromID(id))) { id_clear_lib_data_ex(bmain, &ntree->id, id_in_mainlist); } + /* Same goes for shapekeys. */ + if ((key = BKE_key_from_id(id))) { + id_clear_lib_data_ex(bmain, &key->id, id_in_mainlist); + } + if (GS(id->name) == ID_OB) { Object *object = (Object *)id; if (object->proxy_from != NULL) { diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c index db15dc18da4..ea9fa57f905 100644 --- a/source/blender/blenkernel/intern/mesh.c +++ b/source/blender/blenkernel/intern/mesh.c @@ -573,9 +573,6 @@ void BKE_mesh_make_local(Main *bmain, Mesh *me, const bool force_local) if (force_local || is_local) { if (!is_lib) { id_clear_lib_data(bmain, &me->id); - if (me->key) { - id_clear_lib_data(bmain, &me->key->id); - } BKE_id_expand_local(&me->id); } else { |