From fbc563eb8bd861f5ac0559a4ed1d5e1ff6ed1e91 Mon Sep 17 00:00:00 2001 From: Jehan Date: Sun, 14 Dec 2025 17:54:03 +0100 Subject: [PATCH] Issue #15491: "layers-mask-apply" insensitive on rasterizable items. --- app/actions/layers-actions.c | 7 +++++-- app/actions/layers-commands.c | 12 +++++++----- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/app/actions/layers-actions.c b/app/actions/layers-actions.c index c52e884551..d6b9369000 100644 --- a/app/actions/layers-actions.c +++ b/app/actions/layers-actions.c @@ -773,6 +773,7 @@ layers_actions_update (GimpActionGroup *group, gboolean can_lock_alpha = FALSE; gboolean has_rasterizable = FALSE; gboolean has_rasterized = FALSE; + gboolean has_raster = FALSE; gboolean text_layer = FALSE; gboolean vector_layer = FALSE; gboolean bs_mutable = FALSE; /* At least 1 selected layers' blend space is mutable. */ @@ -939,7 +940,9 @@ layers_actions_update (GimpActionGroup *group, n_text_layers++; has_rasterizable = has_rasterizable || gimp_item_is_rasterizable (iter->data); - has_rasterized = has_rasterized || gimp_item_is_rasterized (iter->data); + has_rasterized = has_rasterized || gimp_item_is_rasterized (iter->data); + has_raster = (gimp_item_is_rasterized (iter->data) || + ! gimp_item_is_rasterizable (iter->data)); } if (n_selected_layers == 1) @@ -1100,7 +1103,7 @@ layers_actions_update (GimpActionGroup *group, SET_SENSITIVE ("layers-mask-add-button", n_selected_layers > 0 && !fs && !ac); SET_SENSITIVE ("layers-mask-add-last-values", n_selected_layers > 0 && !fs && !ac && have_no_masks); - SET_SENSITIVE ("layers-mask-apply", have_writable && !fs && !ac && have_masks && have_no_groups); + SET_SENSITIVE ("layers-mask-apply", have_writable && !fs && !ac && have_masks && have_no_groups && has_raster); SET_SENSITIVE ("layers-mask-delete", n_selected_layers > 0 && !fs && !ac && have_masks); SET_SENSITIVE ("layers-mask-edit", n_selected_layers == 1 && !fs && !ac && have_masks); diff --git a/app/actions/layers-commands.c b/app/actions/layers-commands.c index e8c72c595e..4b5031fd63 100644 --- a/app/actions/layers-commands.c +++ b/app/actions/layers-commands.c @@ -1678,9 +1678,10 @@ layers_mask_apply_cmd_callback (GimpAction *action, mode = (GimpMaskApplyMode) g_variant_get_int32 (value); for (iter = layers; iter; iter = iter->next) { - if (gimp_layer_get_mask (iter->data) && + if (gimp_layer_get_mask (iter->data) && (mode != GIMP_MASK_APPLY || - (! gimp_viewable_get_children (GIMP_VIEWABLE (iter->data)) && + (! gimp_item_is_rasterizable (iter->data) && + ! gimp_viewable_get_children (GIMP_VIEWABLE (iter->data)) && ! gimp_item_is_content_locked (GIMP_ITEM (iter->data), NULL)))) break; } @@ -1713,10 +1714,11 @@ layers_mask_apply_cmd_callback (GimpAction *action, if (gimp_layer_get_mask (iter->data)) { if (mode == GIMP_MASK_APPLY && - (gimp_viewable_get_children (GIMP_VIEWABLE (iter->data)) || + (gimp_item_is_rasterizable (GIMP_ITEM (iter->data)) || + gimp_viewable_get_children (GIMP_VIEWABLE (iter->data)) || gimp_item_is_content_locked (GIMP_ITEM (iter->data), NULL))) - /* Layer groups cannot apply masks. Neither can - * content-locked layers. + /* Layer groups, rasterizable items and content-locked items + * cannot apply masks. */ continue;