diff options
-rw-r--r-- | source/blender/editors/gpencil/gpencil_fill.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/source/blender/editors/gpencil/gpencil_fill.c b/source/blender/editors/gpencil/gpencil_fill.c index a11397bd0bb..3c1f538cb99 100644 --- a/source/blender/editors/gpencil/gpencil_fill.c +++ b/source/blender/editors/gpencil/gpencil_fill.c @@ -269,36 +269,38 @@ static void gpencil_draw_datablock(tGPDfill *tgpf, const float ink[4]) continue; } - /* Decide if layer is included or not depending of the layer mode. */ + /* Decide if the strokes of layers are included or not depending on the layer mode. + * Cannot skip the layer because it can use boundary strokes and must be used. */ + bool skip = false; const int gpl_index = BLI_findindex(&gpd->layers, gpl); switch (brush_settings->fill_layer_mode) { case GP_FILL_GPLMODE_ACTIVE: { if (gpl_index != gpl_active_index) { - continue; + skip = true; } break; } case GP_FILL_GPLMODE_ABOVE: { if (gpl_index != gpl_active_index + 1) { - continue; + skip = true; } break; } case GP_FILL_GPLMODE_BELOW: { if (gpl_index != gpl_active_index - 1) { - continue; + skip = true; } break; } case GP_FILL_GPLMODE_ALL_ABOVE: { if (gpl_index <= gpl_active_index) { - continue; + skip = true; } break; } case GP_FILL_GPLMODE_ALL_BELOW: { if (gpl_index >= gpl_active_index) { - continue; + skip = true; } break; } @@ -338,6 +340,11 @@ static void gpencil_draw_datablock(tGPDfill *tgpf, const float ink[4]) continue; } + /* If the layer must be skipped, but the stroke is not boundary, skip stroke. */ + if ((skip) && ((gps->flag & GP_STROKE_NOFILL) == 0)) { + continue; + } + tgpw.gps = gps; tgpw.gpl = gpl; tgpw.gpf = gpf; |