mirror of https://github.com/GNOME/gimp.git
Bug 678358 - Add option to skip text layers when resizing the image
Add a "Resize text layers" toggle to the canvas size dialog, and default to FALSE because this seems the desired behavior in most cases.
This commit is contained in:
parent
dc00fb57a0
commit
d7588ba45c
|
@ -85,6 +85,7 @@ static void image_resize_callback (GtkWidget *dialog,
|
|||
gint offset_x,
|
||||
gint offset_y,
|
||||
GimpItemSet layer_set,
|
||||
gboolean resize_text_layers,
|
||||
gpointer data);
|
||||
static void image_resize_options_free (ImageResizeOptions *options);
|
||||
|
||||
|
@ -586,6 +587,7 @@ image_resize_callback (GtkWidget *dialog,
|
|||
gint offset_x,
|
||||
gint offset_y,
|
||||
GimpItemSet layer_set,
|
||||
gboolean resize_text_layers,
|
||||
gpointer data)
|
||||
{
|
||||
ImageResizeOptions *options = data;
|
||||
|
@ -612,6 +614,7 @@ image_resize_callback (GtkWidget *dialog,
|
|||
context,
|
||||
width, height, offset_x, offset_y,
|
||||
layer_set,
|
||||
resize_text_layers,
|
||||
progress);
|
||||
|
||||
if (progress)
|
||||
|
|
|
@ -39,6 +39,8 @@
|
|||
#include "gimpprogress.h"
|
||||
#include "gimpsamplepoint.h"
|
||||
|
||||
#include "text/gimptextlayer.h"
|
||||
|
||||
#include "gimp-intl.h"
|
||||
|
||||
|
||||
|
@ -53,7 +55,7 @@ gimp_image_resize (GimpImage *image,
|
|||
{
|
||||
gimp_image_resize_with_layers (image, context,
|
||||
new_width, new_height, offset_x, offset_y,
|
||||
GIMP_ITEM_SET_NONE,
|
||||
GIMP_ITEM_SET_NONE, TRUE,
|
||||
progress);
|
||||
}
|
||||
|
||||
|
@ -65,6 +67,7 @@ gimp_image_resize_with_layers (GimpImage *image,
|
|||
gint offset_x,
|
||||
gint offset_y,
|
||||
GimpItemSet layer_set,
|
||||
gboolean resize_text_layers,
|
||||
GimpProgress *progress)
|
||||
{
|
||||
GList *list;
|
||||
|
@ -171,6 +174,9 @@ gimp_image_resize_with_layers (GimpImage *image,
|
|||
if (gimp_viewable_get_children (GIMP_VIEWABLE (item)))
|
||||
continue;
|
||||
|
||||
if (! resize_text_layers && gimp_item_is_text_layer (item))
|
||||
continue;
|
||||
|
||||
gimp_item_get_offset (item, &old_offset_x, &old_offset_y);
|
||||
|
||||
gimp_item_resize (item, context,
|
||||
|
|
|
@ -34,6 +34,7 @@ void gimp_image_resize_with_layers (GimpImage *image,
|
|||
gint offset_x,
|
||||
gint offset_y,
|
||||
GimpItemSet layer_set,
|
||||
gboolean resize_text_layers,
|
||||
GimpProgress *progress);
|
||||
|
||||
void gimp_image_resize_to_layers (GimpImage *image,
|
||||
|
|
|
@ -53,6 +53,7 @@ typedef struct
|
|||
GtkWidget *offset;
|
||||
GtkWidget *area;
|
||||
GimpItemSet layer_set;
|
||||
gboolean resize_text_layers;
|
||||
GimpResizeCallback callback;
|
||||
gpointer user_data;
|
||||
} ResizeDialog;
|
||||
|
@ -158,13 +159,14 @@ resize_dialog_new (GimpViewable *viewable,
|
|||
g_object_weak_ref (G_OBJECT (dialog),
|
||||
(GWeakNotify) resize_dialog_free, private);
|
||||
|
||||
private->viewable = viewable;
|
||||
private->old_width = width;
|
||||
private->old_height = height;
|
||||
private->old_unit = unit;
|
||||
private->layer_set = GIMP_ITEM_SET_NONE;
|
||||
private->callback = callback;
|
||||
private->user_data = user_data;
|
||||
private->viewable = viewable;
|
||||
private->old_width = width;
|
||||
private->old_height = height;
|
||||
private->old_unit = unit;
|
||||
private->layer_set = GIMP_ITEM_SET_NONE;
|
||||
private->resize_text_layers = FALSE;
|
||||
private->callback = callback;
|
||||
private->user_data = user_data;
|
||||
|
||||
gimp_image_get_resolution (image, &xres, &yres);
|
||||
|
||||
|
@ -288,8 +290,12 @@ resize_dialog_new (GimpViewable *viewable,
|
|||
gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0);
|
||||
gtk_widget_show (frame);
|
||||
|
||||
vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
|
||||
gtk_container_add (GTK_CONTAINER (frame), vbox);
|
||||
gtk_widget_show (vbox);
|
||||
|
||||
hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6);
|
||||
gtk_container_add (GTK_CONTAINER (frame), hbox);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
label = gtk_label_new_with_mnemonic (_("Resize _layers:"));
|
||||
|
@ -306,6 +312,16 @@ resize_dialog_new (GimpViewable *viewable,
|
|||
private->layer_set,
|
||||
G_CALLBACK (gimp_int_combo_box_get_active),
|
||||
&private->layer_set);
|
||||
|
||||
button = gtk_check_button_new_with_mnemonic (_("Resize _text layers"));
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
|
||||
private->resize_text_layers);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
|
||||
gtk_widget_show (button);
|
||||
|
||||
g_signal_connect (button, "toggled",
|
||||
G_CALLBACK (gimp_toggle_button_update),
|
||||
&private->resize_text_layers);
|
||||
}
|
||||
|
||||
return dialog;
|
||||
|
@ -342,6 +358,7 @@ resize_dialog_response (GtkWidget *dialog,
|
|||
gimp_size_entry_get_refval (entry, 0),
|
||||
gimp_size_entry_get_refval (entry, 1),
|
||||
private->layer_set,
|
||||
private->resize_text_layers,
|
||||
private->user_data);
|
||||
break;
|
||||
|
||||
|
|
|
@ -27,6 +27,7 @@ typedef void (* GimpResizeCallback) (GtkWidget *dialog,
|
|||
gint offset_x,
|
||||
gint offset_y,
|
||||
GimpItemSet layer_set,
|
||||
gboolean resize_text_layers,
|
||||
gpointer user_data);
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue