Fix T64058: GPencil - Ensure object mode if linking from a library
authorAntonio Vazquez <blendergit@gmail.com>
Thu, 6 Feb 2020 10:27:01 +0000 (11:27 +0100)
committerAntonio Vazquez <blendergit@gmail.com>
Thu, 6 Feb 2020 10:30:59 +0000 (11:30 +0100)
If the linked or append grease pencil object was added to the scene, the original file could have the datablock status in a different mode, so it's necessary to be sure is in object mode.

Differential Revision: https://developer.blender.org/D6759

source/blender/blenloader/intern/readfile.c

index f6cf68f7daf807bbfe7a0e65b2091fffbdd3fc40..4e571b20b15d4825661ade0c073d05c2c94c820c 100644 (file)
@@ -7227,6 +7227,14 @@ static void direct_link_gpencil(FileData *fd, bGPdata *gpd)
   gpd->adt = newdataadr(fd, gpd->adt);
   direct_link_animdata(fd, gpd->adt);
 
+  /* If linking from a library ensure full objectmode. */
+  if (gpd->id.lib != NULL) {
+    gpd->flag &= ~GP_DATA_STROKE_PAINTMODE;
+    gpd->flag &= ~GP_DATA_STROKE_EDITMODE;
+    gpd->flag &= ~GP_DATA_STROKE_SCULPTMODE;
+    gpd->flag &= ~GP_DATA_STROKE_WEIGHTMODE;
+  }
+
   /* init stroke buffer */
   gpd->runtime.sbuffer = NULL;
   gpd->runtime.sbuffer_used = 0;