Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntonio Vazquez <blendergit@gmail.com>2020-10-27 19:37:21 +0300
committerAntonio Vazquez <blendergit@gmail.com>2020-10-27 19:38:44 +0300
commitbee5921e82eb32dfc2c64aa063f991bc36faa5c7 (patch)
tree47198591f67e49e80d992967d1cc4983de7a185f
parent4975aa410cf0178fa19a29256659f91d7ea84ccb (diff)
GPencil: Fix unreported Fill when use boundary and Visble layers
The new option to filter the layers used by the Fill tool was not using the boundary strokes. The problem was the layers were skipped and any boundary stroke was not used. Now, the layer is not skipped, but the strokes that are not boundary are skipped.
-rw-r--r--source/blender/editors/gpencil/gpencil_fill.c19
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;