[gimp] pdb: fail layer-remove-mask if applying a mask to a group layer



commit 9befb8594ed028c27083a2204d6ea6aad2d15569
Author: Ell <ell_se yahoo com>
Date:   Mon Feb 5 15:13:41 2018 -0500

    pdb: fail layer-remove-mask if applying a mask to a group layer
    
    ... which is not supported.

 app/core/gimplayer.c |    8 ++++++--
 app/pdb/layer-cmds.c |    4 +++-
 pdb/groups/layer.pdb |    4 +++-
 3 files changed, 12 insertions(+), 4 deletions(-)
---
diff --git a/app/core/gimplayer.c b/app/core/gimplayer.c
index ed971be..a4954d6 100644
--- a/app/core/gimplayer.c
+++ b/app/core/gimplayer.c
@@ -1965,9 +1965,13 @@ gimp_layer_apply_mask (GimpLayer         *layer,
   if (! mask)
     return;
 
+  /*  APPLY can not be done to group layers  */
+  g_return_if_fail (! gimp_viewable_get_children (GIMP_VIEWABLE (layer)) ||
+                    mode == GIMP_MASK_DISCARD);
+
   /*  APPLY can only be done to layers with an alpha channel  */
-  if (! gimp_drawable_has_alpha (GIMP_DRAWABLE (layer)))
-    g_return_if_fail (mode == GIMP_MASK_DISCARD || push_undo == TRUE);
+  g_return_if_fail (gimp_drawable_has_alpha (GIMP_DRAWABLE (layer)) ||
+                    mode == GIMP_MASK_DISCARD || push_undo == TRUE);
 
   item  = GIMP_ITEM (layer);
   image = gimp_item_get_image (item);
diff --git a/app/pdb/layer-cmds.c b/app/pdb/layer-cmds.c
index ddfb03b..12e4fa6 100644
--- a/app/pdb/layer-cmds.c
+++ b/app/pdb/layer-cmds.c
@@ -770,7 +770,9 @@ layer_remove_mask_invoker (GimpProcedure         *procedure,
         modify |= GIMP_PDB_ITEM_CONTENT;
 
       if (gimp_pdb_item_is_attached (GIMP_ITEM (layer), NULL, modify, error) &&
-          gimp_layer_get_mask (layer))
+          gimp_layer_get_mask (layer) &&
+          (! gimp_viewable_get_children (GIMP_VIEWABLE (layer)) ||
+           mode == GIMP_MASK_DISCARD))
         gimp_layer_apply_mask (layer, mode, TRUE);
       else
         success = FALSE;
diff --git a/pdb/groups/layer.pdb b/pdb/groups/layer.pdb
index 915c20e..e1edf29 100644
--- a/pdb/groups/layer.pdb
+++ b/pdb/groups/layer.pdb
@@ -423,7 +423,9 @@ HELP
     modify |= GIMP_PDB_ITEM_CONTENT;
 
   if (gimp_pdb_item_is_attached (GIMP_ITEM (layer), NULL, modify, error) &&
-      gimp_layer_get_mask (layer))
+      gimp_layer_get_mask (layer) &&
+      (! gimp_viewable_get_children (GIMP_VIEWABLE (layer)) ||
+       mode == GIMP_MASK_DISCARD))
     gimp_layer_apply_mask (layer, mode, TRUE);
   else
     success = FALSE;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]