Fix T48844: Nodetrees of appended materials/textures/etc. were not correctly made...
authorBastien Montagne <montagne29@wanadoo.fr>
Thu, 14 Jul 2016 16:18:54 +0000 (18:18 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Thu, 14 Jul 2016 16:33:12 +0000 (18:33 +0200)
Previous commits now allow to use id_make_local() here, as one would expect.

Note that I also checked T36003 case, working fine as well with new code.

source/blender/blenkernel/intern/library.c

index c123b5e57fcab67d6046fbc62dc9ee0be93d538b..2e066528f56d549194f5dbbfcf2f1a3aa75196d8 100644 (file)
@@ -1602,14 +1602,8 @@ void BKE_library_make_local(Main *bmain, const Library *lib, const bool untagged
                        {
                                if (lib == NULL || id->lib == lib) {
                                        if (id->lib) {
-                                               /* for Make Local > All we should be calling id_make_local,
-                                                * but doing that breaks append (see #36003 and #36006), we
-                                                * we should make it work with all datablocks and id.us==0 */
-                                               id_clear_lib_data(bmain, id); /* sets 'id->tag' */
-
-                                               /* why sort alphabetically here but not in
-                                                * id_clear_lib_data() ? - campbell */
-                                               id_sort_by_name(lbarray[a], id);
+                                               /* In this specific case, we do want to make ID local even if it has no local usage yet... */
+                                               id_make_local(bmain, id, false, true);
                                        }
                                        else {
                                                id->tag &= ~(LIB_TAG_EXTERN | LIB_TAG_INDIRECT | LIB_TAG_NEW);