[gimp] app: fix crash when flattening an image with no visible layers
- From: Simon Budig <simon src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: fix crash when flattening an image with no visible layers
- Date: Fri, 9 Aug 2013 19:33:13 +0000 (UTC)
commit 514f22f53d61fd9e8105c495745503a63efdd8b0
Author: Simon Budig <simon budig de>
Date: Fri Aug 9 21:32:42 2013 +0200
app: fix crash when flattening an image with no visible layers
app/core/gimpimage-merge.c | 44 +++++++++++++++++++++++++-------------------
1 files changed, 25 insertions(+), 19 deletions(-)
---
diff --git a/app/core/gimpimage-merge.c b/app/core/gimpimage-merge.c
index ec79f63..6bbba58 100644
--- a/app/core/gimpimage-merge.c
+++ b/app/core/gimpimage-merge.c
@@ -171,39 +171,45 @@ gimp_image_flatten (GimpImage *image,
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
g_return_val_if_fail (GIMP_IS_CONTEXT (context), NULL);
- gimp_set_busy (image->gimp);
-
- gimp_image_undo_group_start (image,
- GIMP_UNDO_GROUP_IMAGE_LAYERS_MERGE,
- C_("undo-type", "Flatten Image"));
-
- /* if there's a floating selection, anchor it */
- if (gimp_image_get_floating_selection (image))
- floating_sel_anchor (gimp_image_get_floating_selection (image));
-
for (list = gimp_image_get_layer_iter (image);
list;
list = g_list_next (list))
{
layer = list->data;
+ if (gimp_layer_is_floating_sel (layer))
+ continue;
+
if (gimp_item_get_visible (GIMP_ITEM (layer)))
merge_list = g_slist_append (merge_list, layer);
}
- layer = gimp_image_merge_layers (image,
- gimp_image_get_layers (image),
- merge_list, context,
- GIMP_FLATTEN_IMAGE);
- g_slist_free (merge_list);
+ if (merge_list)
+ {
+ gimp_set_busy (image->gimp);
- gimp_image_alpha_changed (image);
+ gimp_image_undo_group_start (image,
+ GIMP_UNDO_GROUP_IMAGE_LAYERS_MERGE,
+ C_("undo-type", "Flatten Image"));
- gimp_image_undo_group_end (image);
+ /* if there's a floating selection, anchor it */
+ if (gimp_image_get_floating_selection (image))
+ floating_sel_anchor (gimp_image_get_floating_selection (image));
- gimp_unset_busy (image->gimp);
+ layer = gimp_image_merge_layers (image,
+ gimp_image_get_layers (image),
+ merge_list, context,
+ GIMP_FLATTEN_IMAGE);
+ g_slist_free (merge_list);
- return layer;
+ gimp_image_alpha_changed (image);
+
+ gimp_image_undo_group_end (image);
+
+ gimp_unset_busy (image->gimp);
+ }
+
+ return gimp_image_get_active_layer (image);
}
GimpLayer *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]