diff --git a/app/actions/layers-commands.c b/app/actions/layers-commands.c index 0360964fe2..e862353f2e 100644 --- a/app/actions/layers-commands.c +++ b/app/actions/layers-commands.c @@ -818,7 +818,8 @@ layers_duplicate_cmd_callback (GimpAction *action, _("Duplicate layers")); for (iter = layers; iter; iter = iter->next) { - GimpLayer *new_layer; + GimpLayer *new_layer; + GimpContainer *filters; new_layer = GIMP_LAYER (gimp_item_duplicate (GIMP_ITEM (iter->data), G_TYPE_FROM_INSTANCE (iter->data))); @@ -834,7 +835,8 @@ layers_duplicate_cmd_callback (GimpAction *action, new_layers = g_list_prepend (new_layers, new_layer); /* Import any attached layer effects */ - if (gimp_drawable_has_filters (GIMP_DRAWABLE (iter->data))) + filters = gimp_drawable_get_filters (GIMP_DRAWABLE (iter->data)); + if (gimp_container_get_n_children (filters) > 0) { GList *filter_list; GimpContainer *filters; diff --git a/app/core/gimp-edit.c b/app/core/gimp-edit.c index ea3faf6fa7..fbece61ea2 100644 --- a/app/core/gimp-edit.c +++ b/app/core/gimp-edit.c @@ -493,15 +493,15 @@ gimp_edit_paste_get_tagged_layers (GimpImage *image, "gimp-image-copied-layer")); if (copied) { + GimpContainer *filters; + layer = GIMP_LAYER (gimp_item_convert (GIMP_ITEM (iter->data), image, layer_type)); - if (gimp_drawable_has_filters (GIMP_DRAWABLE (iter->data))) + filters = gimp_drawable_get_filters (GIMP_DRAWABLE (iter->data)); + if (gimp_container_get_n_children (filters) > 0) { - GList *filter_list; - GimpContainer *filters; - - filters = gimp_drawable_get_filters (GIMP_DRAWABLE (iter->data)); + GList *filter_list; for (filter_list = GIMP_LIST (filters)->queue->tail; filter_list; diff --git a/app/core/gimpdrawable.c b/app/core/gimpdrawable.c index d320bd4008..1dbf387b97 100644 --- a/app/core/gimpdrawable.c +++ b/app/core/gimpdrawable.c @@ -1330,10 +1330,11 @@ gimp_drawable_convert_type (GimpDrawable *drawable, gboolean push_undo, GimpProgress *progress) { - const Babl *old_format; - const Babl *new_format; - gint old_bits; - gint new_bits; + const Babl *old_format; + const Babl *new_format; + gint old_bits; + gint new_bits; + GimpContainer *filters; g_return_if_fail (GIMP_IS_DRAWABLE (drawable)); g_return_if_fail (GIMP_IS_IMAGE (dest_image)); @@ -1382,11 +1383,11 @@ gimp_drawable_convert_type (GimpDrawable *drawable, /* Update the masks of any filters */ /* TODO: Move to gimp_drawable_real_convert_type () once it's updated * to run for all GimpDrawable child classes */ - if (gimp_drawable_has_filters (drawable)) + filters = gimp_drawable_get_filters (drawable); + if (gimp_container_get_n_children (filters) > 0) { const Babl *mask_format; GList *filter_list; - GimpContainer *filters = gimp_drawable_get_filters (drawable); GimpPrecision new_mask_precision; mask_format = gimp_image_get_mask_format (dest_image); diff --git a/app/core/gimpgrouplayer.c b/app/core/gimpgrouplayer.c index 9e53fb8b96..71d194369a 100644 --- a/app/core/gimpgrouplayer.c +++ b/app/core/gimpgrouplayer.c @@ -591,6 +591,7 @@ gimp_group_layer_duplicate (GimpItem *item, GimpItem *child = list->data; GimpItem *new_child; GimpLayerMask *mask; + GimpContainer *filters; new_child = gimp_item_duplicate (child, G_TYPE_FROM_INSTANCE (child)); @@ -617,12 +618,10 @@ gimp_group_layer_duplicate (GimpItem *item, position++); /* Copy any attached layer effects */ - if (gimp_drawable_has_filters (GIMP_DRAWABLE (child))) + filters = gimp_drawable_get_filters (GIMP_DRAWABLE (child)); + if (gimp_container_get_n_children (filters) > 0) { - GList *filter_list; - GimpContainer *filters; - - filters = gimp_drawable_get_filters (GIMP_DRAWABLE (child)); + GList *filter_list; for (filter_list = GIMP_LIST (filters)->queue->tail; filter_list; filter_list = g_list_previous (filter_list)) diff --git a/app/core/gimpimage-duplicate.c b/app/core/gimpimage-duplicate.c index 8f49d98c0d..65af564e4a 100644 --- a/app/core/gimpimage-duplicate.c +++ b/app/core/gimpimage-duplicate.c @@ -243,8 +243,9 @@ gimp_image_duplicate_layers (GimpImage *image, list; list = g_list_next (list)) { - GimpLayer *layer = list->data; - GimpLayer *new_layer; + GimpLayer *layer = list->data; + GimpLayer *new_layer; + GimpContainer *filters; if (gimp_layer_is_floating_sel (layer)) continue; @@ -263,12 +264,10 @@ gimp_image_duplicate_layers (GimpImage *image, NULL, count++, FALSE); /* Import any attached layer effects */ - if (gimp_drawable_has_filters (GIMP_DRAWABLE (layer))) + filters = gimp_drawable_get_filters (GIMP_DRAWABLE (layer)); + if (gimp_container_get_n_children (filters) > 0) { - GList *filter_list; - GimpContainer *filters; - - filters = gimp_drawable_get_filters (GIMP_DRAWABLE (layer)); + GList *filter_list; for (filter_list = GIMP_LIST (filters)->queue->tail; filter_list; filter_list = g_list_previous (filter_list)) diff --git a/app/core/gimpimage-new.c b/app/core/gimpimage-new.c index 3e47061be3..bfc2714aae 100644 --- a/app/core/gimpimage-new.c +++ b/app/core/gimpimage-new.c @@ -341,10 +341,11 @@ gimp_image_new_copy_drawables (GimpImage *image, { if (g_list_find (copied_drawables, iter->data)) { - GimpLayer *new_layer; - GType new_type; - gboolean is_group; - gboolean is_tagged; + GimpLayer *new_layer; + GimpContainer *filters; + GType new_type; + gboolean is_group; + gboolean is_tagged; if (GIMP_IS_LAYER (iter->data)) new_type = G_TYPE_FROM_INSTANCE (iter->data); @@ -388,12 +389,10 @@ gimp_image_new_copy_drawables (GimpImage *image, if (gimp_layer_can_lock_alpha (new_layer)) gimp_layer_set_lock_alpha (new_layer, FALSE, FALSE); - if (gimp_drawable_has_filters (GIMP_DRAWABLE (iter->data))) + filters = gimp_drawable_get_filters (GIMP_DRAWABLE (iter->data)); + if (gimp_container_get_n_children (filters) > 0) { - GList *filter_list; - GimpContainer *filters; - - filters = gimp_drawable_get_filters (GIMP_DRAWABLE (iter->data)); + GList *filter_list; for (filter_list = GIMP_LIST (filters)->queue->tail; filter_list; filter_list = g_list_previous (filter_list)) diff --git a/app/file/file-open.c b/app/file/file-open.c index 859cc8c97e..e05a8267dd 100644 --- a/app/file/file-open.c +++ b/app/file/file-open.c @@ -778,19 +778,20 @@ file_open_convert_items (GimpImage *dest_image, for (list = items; list; list = g_list_next (list)) { - GimpItem *src = list->data; - GimpItem *item; + GimpItem *src = list->data; + GimpContainer *filters = NULL; + GimpItem *item; item = gimp_item_convert (src, dest_image, G_TYPE_FROM_INSTANCE (src)); /* Import any attached layer effects */ - if (GIMP_IS_DRAWABLE (item) && - gimp_drawable_has_filters (GIMP_DRAWABLE (src))) - { - GList *filter_list; - GimpContainer *filters; + if (GIMP_IS_DRAWABLE (item)) + filters = gimp_drawable_get_filters (GIMP_DRAWABLE (src)); - filters = gimp_drawable_get_filters (GIMP_DRAWABLE (src)); + if (filters != NULL && + gimp_container_get_n_children (filters) > 0) + { + GList *filter_list; for (filter_list = GIMP_LIST (filters)->queue->tail; filter_list; filter_list = g_list_previous (filter_list))