mirror of https://github.com/GNOME/gimp.git
get rid of remaining (invisible) layers after merging visible layers
* libgimp/gimpexport.c: get rid of remaining (invisible) layers after merging visible layers * app/channel_ops.[ch]: applied a patch from Garry R. Osgood that seems to fix bugs #2261 and #2382 (crashes when using offset). A few more changes made the dialog actually work... * app/ops_buttons.c: plugged a memleak I introduced yesterday --Sven
This commit is contained in:
parent
7a432a7734
commit
2df06061bd
11
ChangeLog
11
ChangeLog
|
@ -1,3 +1,14 @@
|
|||
Sun Oct 24 15:24:15 MEST 1999 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* libgimp/gimpexport.c: get rid of remaining (invisible) layers
|
||||
after merging visible layers
|
||||
|
||||
* app/channel_ops.[ch]: applied a patch from Garry R. Osgood that seems
|
||||
to fix bugs #2261 and #2382 (crashes when using offset).
|
||||
A few more changes made the dialog actually work...
|
||||
|
||||
* app/ops_buttons.c: plugged a memleak I introduced yesterday
|
||||
|
||||
Sat Oct 23 22:26:59 MEST 1999 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* app/channels_dialog.c
|
||||
|
|
|
@ -177,26 +177,29 @@ channel_ops_offset (GimpImage* gimage)
|
|||
radio_button = gtk_radio_button_new_with_label (group, _("Background"));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "merge_type",
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "fill_type",
|
||||
(gpointer) OFFSET_BACKGROUND);
|
||||
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||
(GtkSignalFunc) offset_fill_type_update,
|
||||
&off_d->fill_type);
|
||||
off_d);
|
||||
gtk_widget_show (radio_button);
|
||||
|
||||
if (drawable_has_alpha (drawable))
|
||||
{
|
||||
radio_button = gtk_radio_button_new_with_label (group, _("Transparent"));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "merge_type",
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "fill_type",
|
||||
(gpointer) OFFSET_TRANSPARENT);
|
||||
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||
(GtkSignalFunc) offset_fill_type_update,
|
||||
&off_d->fill_type);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||
off_d);
|
||||
gtk_widget_show (radio_button);
|
||||
}
|
||||
if (drawable_has_alpha (drawable))
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||
else
|
||||
gtk_widget_set_sensitive (radio_button, FALSE);
|
||||
|
||||
gtk_widget_show (radio_box);
|
||||
gtk_widget_show (off_d->fill_options);
|
||||
|
||||
/* The by half height and half width option */
|
||||
push = gtk_button_new_with_label (_("Offset by (x/2),(y/2)"));
|
||||
|
@ -204,9 +207,6 @@ channel_ops_offset (GimpImage* gimage)
|
|||
gtk_box_pack_start (GTK_BOX (vbox), push, FALSE, FALSE, 0);
|
||||
gtk_widget_show (push);
|
||||
|
||||
gtk_widget_show (radio_box);
|
||||
gtk_widget_show (off_d->fill_options);
|
||||
|
||||
/* Hook up the wrap around */
|
||||
gtk_signal_connect (GTK_OBJECT (check), "toggled",
|
||||
(GtkSignalFunc) offset_wraparound_update,
|
||||
|
@ -226,7 +226,7 @@ void
|
|||
offset (GimpImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean wrap_around,
|
||||
gint fill_type,
|
||||
ChannelOffsetType fill_type,
|
||||
gint offset_x,
|
||||
gint offset_y)
|
||||
{
|
||||
|
@ -469,6 +469,7 @@ offset_ok_callback (GtkWidget *widget,
|
|||
gint offset_y;
|
||||
|
||||
off_d = (OffsetDialog *) data;
|
||||
|
||||
if ((gimage = off_d->gimage) != NULL)
|
||||
{
|
||||
drawable = gimage_active_drawable (gimage);
|
||||
|
@ -522,7 +523,6 @@ offset_fill_type_update (GtkWidget *widget,
|
|||
if (GTK_TOGGLE_BUTTON (widget)->active)
|
||||
off_d->fill_type =
|
||||
(ChannelOffsetType) gtk_object_get_data (GTK_OBJECT (widget), "fill_type");
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -34,10 +34,11 @@ void channel_ops_duplicate (GimpImage *gimage);
|
|||
void offset (GimpImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean wrap_around,
|
||||
gint fill_type,
|
||||
ChannelOffsetType fill_type,
|
||||
gint offset_x,
|
||||
gint offset_y);
|
||||
|
||||
GimpImage * duplicate (GimpImage *gimage);
|
||||
|
||||
#endif /* __CHANNEL_OPS_H__ */
|
||||
|
||||
|
|
|
@ -177,26 +177,29 @@ channel_ops_offset (GimpImage* gimage)
|
|||
radio_button = gtk_radio_button_new_with_label (group, _("Background"));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "merge_type",
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "fill_type",
|
||||
(gpointer) OFFSET_BACKGROUND);
|
||||
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||
(GtkSignalFunc) offset_fill_type_update,
|
||||
&off_d->fill_type);
|
||||
off_d);
|
||||
gtk_widget_show (radio_button);
|
||||
|
||||
if (drawable_has_alpha (drawable))
|
||||
{
|
||||
radio_button = gtk_radio_button_new_with_label (group, _("Transparent"));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "merge_type",
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "fill_type",
|
||||
(gpointer) OFFSET_TRANSPARENT);
|
||||
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||
(GtkSignalFunc) offset_fill_type_update,
|
||||
&off_d->fill_type);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||
off_d);
|
||||
gtk_widget_show (radio_button);
|
||||
}
|
||||
if (drawable_has_alpha (drawable))
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||
else
|
||||
gtk_widget_set_sensitive (radio_button, FALSE);
|
||||
|
||||
gtk_widget_show (radio_box);
|
||||
gtk_widget_show (off_d->fill_options);
|
||||
|
||||
/* The by half height and half width option */
|
||||
push = gtk_button_new_with_label (_("Offset by (x/2),(y/2)"));
|
||||
|
@ -204,9 +207,6 @@ channel_ops_offset (GimpImage* gimage)
|
|||
gtk_box_pack_start (GTK_BOX (vbox), push, FALSE, FALSE, 0);
|
||||
gtk_widget_show (push);
|
||||
|
||||
gtk_widget_show (radio_box);
|
||||
gtk_widget_show (off_d->fill_options);
|
||||
|
||||
/* Hook up the wrap around */
|
||||
gtk_signal_connect (GTK_OBJECT (check), "toggled",
|
||||
(GtkSignalFunc) offset_wraparound_update,
|
||||
|
@ -226,7 +226,7 @@ void
|
|||
offset (GimpImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean wrap_around,
|
||||
gint fill_type,
|
||||
ChannelOffsetType fill_type,
|
||||
gint offset_x,
|
||||
gint offset_y)
|
||||
{
|
||||
|
@ -469,6 +469,7 @@ offset_ok_callback (GtkWidget *widget,
|
|||
gint offset_y;
|
||||
|
||||
off_d = (OffsetDialog *) data;
|
||||
|
||||
if ((gimage = off_d->gimage) != NULL)
|
||||
{
|
||||
drawable = gimage_active_drawable (gimage);
|
||||
|
@ -522,7 +523,6 @@ offset_fill_type_update (GtkWidget *widget,
|
|||
if (GTK_TOGGLE_BUTTON (widget)->active)
|
||||
off_d->fill_type =
|
||||
(ChannelOffsetType) gtk_object_get_data (GTK_OBJECT (widget), "fill_type");
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -34,10 +34,11 @@ void channel_ops_duplicate (GimpImage *gimage);
|
|||
void offset (GimpImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean wrap_around,
|
||||
gint fill_type,
|
||||
ChannelOffsetType fill_type,
|
||||
gint offset_x,
|
||||
gint offset_y);
|
||||
|
||||
GimpImage * duplicate (GimpImage *gimage);
|
||||
|
||||
#endif /* __CHANNEL_OPS_H__ */
|
||||
|
||||
|
|
|
@ -177,26 +177,29 @@ channel_ops_offset (GimpImage* gimage)
|
|||
radio_button = gtk_radio_button_new_with_label (group, _("Background"));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "merge_type",
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "fill_type",
|
||||
(gpointer) OFFSET_BACKGROUND);
|
||||
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||
(GtkSignalFunc) offset_fill_type_update,
|
||||
&off_d->fill_type);
|
||||
off_d);
|
||||
gtk_widget_show (radio_button);
|
||||
|
||||
if (drawable_has_alpha (drawable))
|
||||
{
|
||||
radio_button = gtk_radio_button_new_with_label (group, _("Transparent"));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "merge_type",
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "fill_type",
|
||||
(gpointer) OFFSET_TRANSPARENT);
|
||||
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||
(GtkSignalFunc) offset_fill_type_update,
|
||||
&off_d->fill_type);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||
off_d);
|
||||
gtk_widget_show (radio_button);
|
||||
}
|
||||
if (drawable_has_alpha (drawable))
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||
else
|
||||
gtk_widget_set_sensitive (radio_button, FALSE);
|
||||
|
||||
gtk_widget_show (radio_box);
|
||||
gtk_widget_show (off_d->fill_options);
|
||||
|
||||
/* The by half height and half width option */
|
||||
push = gtk_button_new_with_label (_("Offset by (x/2),(y/2)"));
|
||||
|
@ -204,9 +207,6 @@ channel_ops_offset (GimpImage* gimage)
|
|||
gtk_box_pack_start (GTK_BOX (vbox), push, FALSE, FALSE, 0);
|
||||
gtk_widget_show (push);
|
||||
|
||||
gtk_widget_show (radio_box);
|
||||
gtk_widget_show (off_d->fill_options);
|
||||
|
||||
/* Hook up the wrap around */
|
||||
gtk_signal_connect (GTK_OBJECT (check), "toggled",
|
||||
(GtkSignalFunc) offset_wraparound_update,
|
||||
|
@ -226,7 +226,7 @@ void
|
|||
offset (GimpImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean wrap_around,
|
||||
gint fill_type,
|
||||
ChannelOffsetType fill_type,
|
||||
gint offset_x,
|
||||
gint offset_y)
|
||||
{
|
||||
|
@ -469,6 +469,7 @@ offset_ok_callback (GtkWidget *widget,
|
|||
gint offset_y;
|
||||
|
||||
off_d = (OffsetDialog *) data;
|
||||
|
||||
if ((gimage = off_d->gimage) != NULL)
|
||||
{
|
||||
drawable = gimage_active_drawable (gimage);
|
||||
|
@ -522,7 +523,6 @@ offset_fill_type_update (GtkWidget *widget,
|
|||
if (GTK_TOGGLE_BUTTON (widget)->active)
|
||||
off_d->fill_type =
|
||||
(ChannelOffsetType) gtk_object_get_data (GTK_OBJECT (widget), "fill_type");
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -34,10 +34,11 @@ void channel_ops_duplicate (GimpImage *gimage);
|
|||
void offset (GimpImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean wrap_around,
|
||||
gint fill_type,
|
||||
ChannelOffsetType fill_type,
|
||||
gint offset_x,
|
||||
gint offset_y);
|
||||
|
||||
GimpImage * duplicate (GimpImage *gimage);
|
||||
|
||||
#endif /* __CHANNEL_OPS_H__ */
|
||||
|
||||
|
|
|
@ -177,26 +177,29 @@ channel_ops_offset (GimpImage* gimage)
|
|||
radio_button = gtk_radio_button_new_with_label (group, _("Background"));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "merge_type",
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "fill_type",
|
||||
(gpointer) OFFSET_BACKGROUND);
|
||||
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||
(GtkSignalFunc) offset_fill_type_update,
|
||||
&off_d->fill_type);
|
||||
off_d);
|
||||
gtk_widget_show (radio_button);
|
||||
|
||||
if (drawable_has_alpha (drawable))
|
||||
{
|
||||
radio_button = gtk_radio_button_new_with_label (group, _("Transparent"));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "merge_type",
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "fill_type",
|
||||
(gpointer) OFFSET_TRANSPARENT);
|
||||
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||
(GtkSignalFunc) offset_fill_type_update,
|
||||
&off_d->fill_type);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||
off_d);
|
||||
gtk_widget_show (radio_button);
|
||||
}
|
||||
if (drawable_has_alpha (drawable))
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||
else
|
||||
gtk_widget_set_sensitive (radio_button, FALSE);
|
||||
|
||||
gtk_widget_show (radio_box);
|
||||
gtk_widget_show (off_d->fill_options);
|
||||
|
||||
/* The by half height and half width option */
|
||||
push = gtk_button_new_with_label (_("Offset by (x/2),(y/2)"));
|
||||
|
@ -204,9 +207,6 @@ channel_ops_offset (GimpImage* gimage)
|
|||
gtk_box_pack_start (GTK_BOX (vbox), push, FALSE, FALSE, 0);
|
||||
gtk_widget_show (push);
|
||||
|
||||
gtk_widget_show (radio_box);
|
||||
gtk_widget_show (off_d->fill_options);
|
||||
|
||||
/* Hook up the wrap around */
|
||||
gtk_signal_connect (GTK_OBJECT (check), "toggled",
|
||||
(GtkSignalFunc) offset_wraparound_update,
|
||||
|
@ -226,7 +226,7 @@ void
|
|||
offset (GimpImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean wrap_around,
|
||||
gint fill_type,
|
||||
ChannelOffsetType fill_type,
|
||||
gint offset_x,
|
||||
gint offset_y)
|
||||
{
|
||||
|
@ -469,6 +469,7 @@ offset_ok_callback (GtkWidget *widget,
|
|||
gint offset_y;
|
||||
|
||||
off_d = (OffsetDialog *) data;
|
||||
|
||||
if ((gimage = off_d->gimage) != NULL)
|
||||
{
|
||||
drawable = gimage_active_drawable (gimage);
|
||||
|
@ -522,7 +523,6 @@ offset_fill_type_update (GtkWidget *widget,
|
|||
if (GTK_TOGGLE_BUTTON (widget)->active)
|
||||
off_d->fill_type =
|
||||
(ChannelOffsetType) gtk_object_get_data (GTK_OBJECT (widget), "fill_type");
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -34,10 +34,11 @@ void channel_ops_duplicate (GimpImage *gimage);
|
|||
void offset (GimpImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean wrap_around,
|
||||
gint fill_type,
|
||||
ChannelOffsetType fill_type,
|
||||
gint offset_x,
|
||||
gint offset_y);
|
||||
|
||||
GimpImage * duplicate (GimpImage *gimage);
|
||||
|
||||
#endif /* __CHANNEL_OPS_H__ */
|
||||
|
||||
|
|
|
@ -177,26 +177,29 @@ channel_ops_offset (GimpImage* gimage)
|
|||
radio_button = gtk_radio_button_new_with_label (group, _("Background"));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "merge_type",
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "fill_type",
|
||||
(gpointer) OFFSET_BACKGROUND);
|
||||
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||
(GtkSignalFunc) offset_fill_type_update,
|
||||
&off_d->fill_type);
|
||||
off_d);
|
||||
gtk_widget_show (radio_button);
|
||||
|
||||
if (drawable_has_alpha (drawable))
|
||||
{
|
||||
radio_button = gtk_radio_button_new_with_label (group, _("Transparent"));
|
||||
group = gtk_radio_button_group (GTK_RADIO_BUTTON (radio_button));
|
||||
gtk_box_pack_start (GTK_BOX (radio_box), radio_button, FALSE, FALSE, 0);
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "merge_type",
|
||||
gtk_object_set_data (GTK_OBJECT (radio_button), "fill_type",
|
||||
(gpointer) OFFSET_TRANSPARENT);
|
||||
gtk_signal_connect (GTK_OBJECT (radio_button), "toggled",
|
||||
(GtkSignalFunc) offset_fill_type_update,
|
||||
&off_d->fill_type);
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||
off_d);
|
||||
gtk_widget_show (radio_button);
|
||||
}
|
||||
if (drawable_has_alpha (drawable))
|
||||
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio_button), TRUE);
|
||||
else
|
||||
gtk_widget_set_sensitive (radio_button, FALSE);
|
||||
|
||||
gtk_widget_show (radio_box);
|
||||
gtk_widget_show (off_d->fill_options);
|
||||
|
||||
/* The by half height and half width option */
|
||||
push = gtk_button_new_with_label (_("Offset by (x/2),(y/2)"));
|
||||
|
@ -204,9 +207,6 @@ channel_ops_offset (GimpImage* gimage)
|
|||
gtk_box_pack_start (GTK_BOX (vbox), push, FALSE, FALSE, 0);
|
||||
gtk_widget_show (push);
|
||||
|
||||
gtk_widget_show (radio_box);
|
||||
gtk_widget_show (off_d->fill_options);
|
||||
|
||||
/* Hook up the wrap around */
|
||||
gtk_signal_connect (GTK_OBJECT (check), "toggled",
|
||||
(GtkSignalFunc) offset_wraparound_update,
|
||||
|
@ -226,7 +226,7 @@ void
|
|||
offset (GimpImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean wrap_around,
|
||||
gint fill_type,
|
||||
ChannelOffsetType fill_type,
|
||||
gint offset_x,
|
||||
gint offset_y)
|
||||
{
|
||||
|
@ -469,6 +469,7 @@ offset_ok_callback (GtkWidget *widget,
|
|||
gint offset_y;
|
||||
|
||||
off_d = (OffsetDialog *) data;
|
||||
|
||||
if ((gimage = off_d->gimage) != NULL)
|
||||
{
|
||||
drawable = gimage_active_drawable (gimage);
|
||||
|
@ -522,7 +523,6 @@ offset_fill_type_update (GtkWidget *widget,
|
|||
if (GTK_TOGGLE_BUTTON (widget)->active)
|
||||
off_d->fill_type =
|
||||
(ChannelOffsetType) gtk_object_get_data (GTK_OBJECT (widget), "fill_type");
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -34,10 +34,11 @@ void channel_ops_duplicate (GimpImage *gimage);
|
|||
void offset (GimpImage *gimage,
|
||||
GimpDrawable *drawable,
|
||||
gboolean wrap_around,
|
||||
gint fill_type,
|
||||
ChannelOffsetType fill_type,
|
||||
gint offset_x,
|
||||
gint offset_y);
|
||||
|
||||
GimpImage * duplicate (GimpImage *gimage);
|
||||
|
||||
#endif /* __CHANNEL_OPS_H__ */
|
||||
|
||||
|
|
|
@ -43,6 +43,7 @@ ops_button_box_new (GtkWidget *parent,
|
|||
GtkStyle *style;
|
||||
GSList *group = NULL;
|
||||
GSList *box_list = NULL;
|
||||
GSList *list;
|
||||
gint max_width = 0;
|
||||
gint width;
|
||||
gint height;
|
||||
|
@ -115,10 +116,10 @@ ops_button_box_new (GtkWidget *parent,
|
|||
ops_button++;
|
||||
}
|
||||
|
||||
for (; box_list; box_list = box_list->next)
|
||||
for (list = box_list; list; list = list->next)
|
||||
{
|
||||
gtk_widget_set_usize (GTK_WIDGET (box_list->data), max_width, -1);
|
||||
gtk_widget_show (GTK_WIDGET (box_list->data));
|
||||
gtk_widget_set_usize (GTK_WIDGET (list->data), max_width, -1);
|
||||
gtk_widget_show (GTK_WIDGET (list->data));
|
||||
}
|
||||
g_slist_free (box_list);
|
||||
|
||||
|
|
|
@ -38,11 +38,25 @@ typedef struct
|
|||
|
||||
|
||||
/* the functions that do the actual export */
|
||||
|
||||
static void
|
||||
export_merge (gint32 image_ID,
|
||||
gint32 *drawable_ID)
|
||||
{
|
||||
*drawable_ID = gimp_image_merge_visible_layers (image_ID, GIMP_EXPAND_AS_NECESSARY);
|
||||
gint nlayers;
|
||||
gint i;
|
||||
gint32 *layers;
|
||||
|
||||
*drawable_ID = gimp_image_merge_visible_layers (image_ID, GIMP_CLIP_TO_IMAGE);
|
||||
|
||||
/* remove any remaining (invisible) layers */
|
||||
layers = gimp_image_get_layers (image_ID, &nlayers);
|
||||
for (i = 0; i < nlayers; i++)
|
||||
{
|
||||
if (layers[i] != *drawable_ID)
|
||||
gimp_image_remove_layer (image_ID, layers[i]);
|
||||
}
|
||||
g_free (layers);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -97,6 +111,7 @@ export_add_alpha (gint32 image_ID,
|
|||
g_free (layers);
|
||||
}
|
||||
|
||||
|
||||
/* a set of predefined actions */
|
||||
|
||||
static ExportAction export_action_merge =
|
||||
|
@ -190,6 +205,7 @@ static ExportAction export_action_add_alpha =
|
|||
0
|
||||
};
|
||||
|
||||
|
||||
/* dialog functions */
|
||||
|
||||
static GtkWidget *dialog = NULL;
|
||||
|
@ -416,7 +432,7 @@ gimp_export_image (gint32 *image_ID_ptr,
|
|||
/* check multiple layers */
|
||||
if (!added_flatten && nlayers > 1)
|
||||
{
|
||||
if ((cap & CAN_HANDLE_LAYERS_AS_ANIMATION))
|
||||
if (cap & CAN_HANDLE_LAYERS_AS_ANIMATION)
|
||||
actions = g_slist_prepend (actions, &export_action_animate_or_merge);
|
||||
else if ( !(cap & CAN_HANDLE_LAYERS))
|
||||
actions = g_slist_prepend (actions, &export_action_merge);
|
||||
|
@ -483,6 +499,7 @@ gimp_export_image (gint32 *image_ID_ptr,
|
|||
action->alt_action (*image_ID_ptr, drawable_ID_ptr);
|
||||
}
|
||||
}
|
||||
g_slist_free (actions);
|
||||
|
||||
return (dialog_return);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue