Fix GPencil part of [#36101] BSurface Throw an Error When Press "Add Surface"
authorBastien Montagne <montagne29@wanadoo.fr>
Mon, 19 Aug 2013 22:46:32 +0000 (22:46 +0000)
committerBastien Montagne <montagne29@wanadoo.fr>
Mon, 19 Aug 2013 22:46:32 +0000 (22:46 +0000)
gpencil_data_get_active and gpencil_data_get_active_v3d did not have consistent behavior when we had an active object, but not on any visible layer (the first would return the default scene gpd in this case, while the first was still returning active object's one). Now they both return scene's one.

source/blender/editors/gpencil/gpencil_edit.c

index 99157b074fda79aceff8134b3b3fe36bd3532bc9..5ed34f0d0f00baf02daeb61b10313536b4a2a429 100644 (file)
@@ -192,7 +192,16 @@ bGPdata *gpencil_data_get_active(const bContext *C)
 /* needed for offscreen rendering */
 bGPdata *gpencil_data_get_active_v3d(Scene *scene)
 {
-       bGPdata *gpd = scene->basact ? scene->basact->object->gpd : NULL;
+       Base *base = scene->basact;
+       bGPdata *gpd = base ? base->object->gpd : NULL;
+       if (base && gpd) {
+               /* We have to make sure active object is actually visible, else we must use default scene gpd,
+                * to be consistent with gpencil_data_get_active's behavior.
+                */
+               if ((scene->lay & base->lay) == 0) {
+                       gpd = NULL;
+               }
+       }
        return gpd ? gpd : scene->gpd;
 }