diff --git a/app/actions/layers-commands.c b/app/actions/layers-commands.c index 43a57a9cae..e8c72c595e 100644 --- a/app/actions/layers-commands.c +++ b/app/actions/layers-commands.c @@ -1137,7 +1137,7 @@ layers_rasterize_cmd_callback (GimpAction *action, for (iter = layers; iter; iter = iter->next) { if (GIMP_IS_RASTERIZABLE (iter->data) && ! gimp_rasterizable_is_rasterized (iter->data)) - gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (iter->data)); + gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (iter->data), TRUE); } gimp_image_undo_group_end (image); diff --git a/app/core/gimprasterizable.c b/app/core/gimprasterizable.c index ee8122f31b..de0ea04e3c 100644 --- a/app/core/gimprasterizable.c +++ b/app/core/gimprasterizable.c @@ -86,11 +86,11 @@ gimp_rasterizable_default_init (GimpRasterizableInterface *iface) * Rasterize @rasterizable. **/ void -gimp_rasterizable_rasterize (GimpRasterizable *rasterizable) +gimp_rasterizable_rasterize (GimpRasterizable *rasterizable, + gboolean push_undo) { GimpRasterizablePrivate *private; GimpImage *image; - gchar *undo_text; g_return_if_fail (GIMP_IS_RASTERIZABLE (rasterizable)); g_return_if_fail (! gimp_rasterizable_is_rasterized (rasterizable)); @@ -98,17 +98,24 @@ gimp_rasterizable_rasterize (GimpRasterizable *rasterizable) private = GIMP_RASTERIZABLE_GET_PRIVATE (rasterizable); image = gimp_item_get_image (GIMP_ITEM (rasterizable)); - /* TRANSLATORS: the %s will be a type of item, i.e. "Text Layer". */ - undo_text = g_strdup_printf (_("Rasterize %s"), - GIMP_VIEWABLE_GET_CLASS (rasterizable)->default_name); - gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_ITEM_PROPERTIES, undo_text); + if (push_undo) + { + gchar *undo_text; - gimp_image_undo_push_rasterizable (image, NULL, rasterizable); + /* TRANSLATORS: the %s will be a type of item, i.e. "Text Layer". */ + undo_text = g_strdup_printf (_("Rasterize %s"), + GIMP_VIEWABLE_GET_CLASS (rasterizable)->default_name); + gimp_image_undo_group_start (image, GIMP_UNDO_GROUP_ITEM_PROPERTIES, undo_text); + gimp_image_undo_push_rasterizable (image, NULL, rasterizable); + + g_free (undo_text); + } private->rasterized = TRUE; g_signal_emit (rasterizable, gimp_rasterizable_signals[SET_RASTERIZED], 0, TRUE); - gimp_image_undo_group_end (image); + if (push_undo) + gimp_image_undo_group_end (image); /* Triggers thumbnail update. */ gimp_drawable_update_all (GIMP_DRAWABLE (rasterizable)); diff --git a/app/core/gimprasterizable.h b/app/core/gimprasterizable.h index b5eb0c2705..de40c062ff 100644 --- a/app/core/gimprasterizable.h +++ b/app/core/gimprasterizable.h @@ -36,7 +36,8 @@ struct _GimpRasterizableInterface }; -void gimp_rasterizable_rasterize (GimpRasterizable *rasterizable); +void gimp_rasterizable_rasterize (GimpRasterizable *rasterizable, + gboolean push_undo); void gimp_rasterizable_restore (GimpRasterizable *rasterizable); gboolean gimp_rasterizable_is_rasterized (GimpRasterizable *rasterizable); diff --git a/app/path/gimpvectorlayer.c b/app/path/gimpvectorlayer.c index 24ed8e7f5d..bfcf703420 100644 --- a/app/path/gimpvectorlayer.c +++ b/app/path/gimpvectorlayer.c @@ -329,7 +329,7 @@ gimp_vector_layer_set_buffer (GimpDrawable *drawable, if (push_undo && ! is_rasterized) { - gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (layer)); + gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (layer), push_undo); gimp_image_undo_group_end (image); } } @@ -358,7 +358,7 @@ gimp_vector_layer_push_undo (GimpDrawable *drawable, if (! is_rasterized) { - gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (layer)); + gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (layer), TRUE); gimp_image_undo_group_end (image); } } @@ -809,7 +809,7 @@ gimp_vector_layer_changed_options (GimpVectorLayer *layer) GimpItem *item = GIMP_ITEM (layer); if (layer->options && ! layer->options->path) - gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (layer)); + gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (layer), TRUE); else if (gimp_item_is_attached (item)) gimp_vector_layer_refresh (layer); } diff --git a/app/pdb/rasterizable-cmds.c b/app/pdb/rasterizable-cmds.c index 7ba6acc780..8b2d13ba0a 100644 --- a/app/pdb/rasterizable-cmds.c +++ b/app/pdb/rasterizable-cmds.c @@ -57,7 +57,7 @@ rasterizable_rasterize_invoker (GimpProcedure *procedure, { if (! gimp_rasterizable_is_rasterized (GIMP_RASTERIZABLE (item))) { - gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (item)); + gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (item), TRUE); } else { diff --git a/app/text/gimptextlayer-xcf.c b/app/text/gimptextlayer-xcf.c index 1e44bb6044..145146ec6f 100644 --- a/app/text/gimptextlayer-xcf.c +++ b/app/text/gimptextlayer-xcf.c @@ -170,5 +170,5 @@ gimp_text_layer_set_xcf_flags (GimpTextLayer *text_layer, (flags & TEXT_LAYER_XCF_DONT_AUTO_RENAME) == 0); if ((flags & TEXT_LAYER_XCF_MODIFIED) != 0) - gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (text_layer)); + gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (text_layer), FALSE); } diff --git a/app/text/gimptextlayer.c b/app/text/gimptextlayer.c index f08b446e7d..0083a4b782 100644 --- a/app/text/gimptextlayer.c +++ b/app/text/gimptextlayer.c @@ -348,7 +348,7 @@ gimp_text_layer_set_buffer (GimpDrawable *drawable, if (push_undo && ! is_rasterized) { - gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (layer)); + gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (layer), push_undo); gimp_image_undo_group_end (image); } } @@ -377,7 +377,7 @@ gimp_text_layer_push_undo (GimpDrawable *drawable, if (! is_rasterized) { - gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (layer)); + gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (layer), TRUE); gimp_image_undo_group_end (image); } } diff --git a/app/xcf/xcf-load.c b/app/xcf/xcf-load.c index fedaa80e61..cb2c87561f 100644 --- a/app/xcf/xcf-load.c +++ b/app/xcf/xcf-load.c @@ -1024,7 +1024,7 @@ xcf_load_image (Gimp *gimp, g_object_unref (options); if (vdata->modified) - gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (vlayer)); + gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (vlayer), FALSE); if (selected) { diff --git a/pdb/groups/rasterizable.pdb b/pdb/groups/rasterizable.pdb index 86ccac70c9..c8c3fcf241 100644 --- a/pdb/groups/rasterizable.pdb +++ b/pdb/groups/rasterizable.pdb @@ -43,7 +43,7 @@ HELP { if (! gimp_rasterizable_is_rasterized (GIMP_RASTERIZABLE (item))) { - gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (item)); + gimp_rasterizable_rasterize (GIMP_RASTERIZABLE (item), TRUE); } else {