app: implement "disable layer mask" in the GEGL graph

This commit is contained in:
Michael Natterer 2012-03-23 14:21:40 +01:00
parent 061e044e0a
commit bfd54a69b7
1 changed files with 24 additions and 3 deletions

View File

@ -887,7 +887,7 @@ gimp_layer_get_node (GimpItem *item)
gegl_node_connect_to (mask, "output",
layer->opacity_node, "input");
}
else
else if (gimp_layer_get_apply_mask (layer))
{
gegl_node_connect_to (mask, "output",
layer->opacity_node, "aux");
@ -1650,6 +1650,23 @@ gimp_layer_set_apply_mask (GimpLayer *layer,
layer->apply_mask = apply ? TRUE : FALSE;
if (layer->opacity_node && ! gimp_layer_get_show_mask (layer))
{
GeglNode *mask;
mask = gimp_drawable_get_source_node (GIMP_DRAWABLE (layer->mask));
if (layer->apply_mask)
{
gegl_node_connect_to (mask, "output",
layer->opacity_node, "aux");
}
else
{
gegl_node_disconnect (layer->opacity_node, "aux");
}
}
gimp_drawable_update (GIMP_DRAWABLE (layer),
0, 0,
gimp_item_get_width (GIMP_ITEM (layer)),
@ -1732,8 +1749,12 @@ gimp_layer_set_show_mask (GimpLayer *layer,
gegl_node_connect_to (source, "output",
layer->opacity_node, "input");
gegl_node_connect_to (mask, "output",
layer->opacity_node, "aux");
if (gimp_layer_get_apply_mask (layer))
{
gegl_node_connect_to (mask, "output",
layer->opacity_node, "aux");
}
}
}