mirror of https://github.com/GNOME/gimp.git
tools: Add NDE support for group layers
This patch allows NDE filters to be applied to group layers as well. The "merge down" function is disabled.
This commit is contained in:
parent
71b41c68c2
commit
69314ba087
|
@ -911,6 +911,7 @@ filters_actions_update (GimpActionGroup *group,
|
|||
gboolean gray = FALSE;
|
||||
gboolean alpha = FALSE;
|
||||
gboolean supports_alpha = FALSE;
|
||||
gboolean is_group = FALSE;
|
||||
|
||||
image = action_data_get_image (data);
|
||||
|
||||
|
@ -937,7 +938,7 @@ filters_actions_update (GimpActionGroup *group,
|
|||
writable = ! gimp_item_is_content_locked (item, NULL);
|
||||
|
||||
if (gimp_viewable_get_children (GIMP_VIEWABLE (drawable)))
|
||||
writable = FALSE;
|
||||
is_group = TRUE;
|
||||
}
|
||||
|
||||
g_list_free (drawables);
|
||||
|
@ -947,7 +948,7 @@ filters_actions_update (GimpActionGroup *group,
|
|||
gimp_action_group_set_action_sensitive (group, action, (condition) != 0, NULL)
|
||||
|
||||
SET_SENSITIVE ("filters-alien-map", writable);
|
||||
SET_SENSITIVE ("filters-antialias", writable);
|
||||
SET_SENSITIVE ("filters-antialias", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-apply-canvas", writable);
|
||||
SET_SENSITIVE ("filters-apply-lens", writable);
|
||||
SET_SENSITIVE ("filters-bayer-matrix", writable);
|
||||
|
@ -974,11 +975,11 @@ filters_actions_update (GimpActionGroup *group,
|
|||
SET_SENSITIVE ("filters-desaturate", writable && !gray);
|
||||
SET_SENSITIVE ("filters-difference-of-gaussians", writable);
|
||||
SET_SENSITIVE ("filters-diffraction-patterns", writable);
|
||||
SET_SENSITIVE ("filters-dilate", writable);
|
||||
SET_SENSITIVE ("filters-dilate", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-displace", writable);
|
||||
SET_SENSITIVE ("filters-distance-map", writable);
|
||||
SET_SENSITIVE ("filters-dropshadow", writable && alpha);
|
||||
SET_SENSITIVE ("filters-edge", writable);
|
||||
SET_SENSITIVE ("filters-edge", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-edge-laplace", writable);
|
||||
SET_SENSITIVE ("filters-edge-neon", writable);
|
||||
SET_SENSITIVE ("filters-edge-sobel", writable);
|
||||
|
@ -997,9 +998,9 @@ filters_actions_update (GimpActionGroup *group,
|
|||
SET_SENSITIVE ("filters-hue-chroma", writable);
|
||||
SET_SENSITIVE ("filters-hue-saturation", writable && !gray);
|
||||
SET_SENSITIVE ("filters-illusion", writable);
|
||||
SET_SENSITIVE ("filters-invert-linear", writable);
|
||||
SET_SENSITIVE ("filters-invert-perceptual", writable);
|
||||
SET_SENSITIVE ("filters-invert-value", writable);
|
||||
SET_SENSITIVE ("filters-invert-linear", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-invert-perceptual", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-invert-value", writable && !is_group);
|
||||
SET_SENSITIVE ("filters-image-gradient", writable);
|
||||
SET_SENSITIVE ("filters-kaleidoscope", writable);
|
||||
SET_SENSITIVE ("filters-lens-blur", writable);
|
||||
|
|
|
@ -448,6 +448,10 @@ gimp_image_merge_group_layer (GimpImage *image,
|
|||
gimp_layer_set_composite_mode (GIMP_LAYER (group), composite_mode, TRUE);
|
||||
}
|
||||
|
||||
/* Merge down filter effects */
|
||||
gimp_drawable_merge_filters (GIMP_DRAWABLE (group));
|
||||
gimp_drawable_clear_filters (GIMP_DRAWABLE (group));
|
||||
|
||||
layer = GIMP_LAYER (gimp_item_duplicate (GIMP_ITEM (group),
|
||||
GIMP_TYPE_LAYER));
|
||||
|
||||
|
|
|
@ -304,15 +304,6 @@ gimp_filter_tool_initialize (GimpTool *tool,
|
|||
}
|
||||
drawable = drawables->data;
|
||||
|
||||
if (gimp_viewable_get_children (GIMP_VIEWABLE (drawable)))
|
||||
{
|
||||
g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED,
|
||||
_("Cannot modify the pixels of layer groups."));
|
||||
|
||||
g_list_free (drawables);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (gimp_item_is_content_locked (GIMP_ITEM (drawable), &locked_item))
|
||||
{
|
||||
g_set_error_literal (error, GIMP_ERROR, GIMP_FAILED,
|
||||
|
|
|
@ -2732,7 +2732,8 @@ gimp_item_tree_view_effects_merged_clicked (GtkWidget *widget,
|
|||
return;
|
||||
}
|
||||
|
||||
if (view->priv->effects_drawable)
|
||||
if (view->priv->effects_drawable &&
|
||||
! gimp_viewable_get_children (GIMP_VIEWABLE (view->priv->effects_drawable)))
|
||||
{
|
||||
GimpImage *image = view->priv->image;
|
||||
GeglNode *op = gimp_drawable_filter_get_operation (view->priv->effects_filter);
|
||||
|
@ -3239,12 +3240,20 @@ static void
|
|||
gimp_item_tree_effects_set_sensitive (GimpItemTreeView *view,
|
||||
gboolean is_sensitive)
|
||||
{
|
||||
gboolean is_group = FALSE;
|
||||
|
||||
/* Do not allow merging down effects on group layers */
|
||||
if (view->priv->effects_drawable &&
|
||||
gimp_viewable_get_children (GIMP_VIEWABLE (view->priv->effects_drawable)))
|
||||
is_group = TRUE;
|
||||
|
||||
gtk_widget_set_sensitive (view->priv->effects_box, is_sensitive);
|
||||
gtk_widget_set_sensitive (view->priv->effects_visible_button, is_sensitive);
|
||||
gtk_widget_set_sensitive (view->priv->effects_edit_button, is_sensitive);
|
||||
gtk_widget_set_sensitive (view->priv->effects_raise_button, is_sensitive);
|
||||
gtk_widget_set_sensitive (view->priv->effects_lower_button, is_sensitive);
|
||||
gtk_widget_set_sensitive (view->priv->effects_merge_button, is_sensitive);
|
||||
gtk_widget_set_sensitive (view->priv->effects_merge_button,
|
||||
(is_sensitive && ! is_group));
|
||||
gtk_widget_set_sensitive (view->priv->effects_remove_button, is_sensitive);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue