[gimp/gimp-2-10] Issue #1520 - GIMP 2.10 Crashes when trying to convert 8bit colour...
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp/gimp-2-10] Issue #1520 - GIMP 2.10 Crashes when trying to convert 8bit colour...
- Date: Wed, 30 May 2018 00:20:30 +0000 (UTC)
commit 93c337896cd3fb84f2fdefd94ecf5b2db130ab4a
Author: Michael Natterer <mitch gimp org>
Date: Wed May 30 02:16:54 2018 +0200
Issue #1520 - GIMP 2.10 Crashes when trying to convert 8bit colour...
...mode image to 1 bit.
Don't try to remove unused colors from the mono black/white palette,
(cherry picked from commit 0ff95b66b74fcefb3dffdf673332ec195539d3a9)
app/core/gimpimage-convert-indexed.c | 4 +++-
app/dialogs/convert-indexed-dialog.c | 35 +++++++++++++++++++++++++++--------
2 files changed, 30 insertions(+), 9 deletions(-)
---
diff --git a/app/core/gimpimage-convert-indexed.c b/app/core/gimpimage-convert-indexed.c
index 954fb6ef29..4558ee4845 100644
--- a/app/core/gimpimage-convert-indexed.c
+++ b/app/core/gimpimage-convert-indexed.c
@@ -1014,7 +1014,9 @@ gimp_image_convert_indexed (GimpImage *image,
}
/* Set the final palette on the image */
- if (remove_duplicates && (palette_type != GIMP_CONVERT_PALETTE_GENERATE))
+ if (remove_duplicates &&
+ (palette_type != GIMP_CONVERT_PALETTE_GENERATE) &&
+ (palette_type != GIMP_CONVERT_PALETTE_MONO))
{
guchar colormap[GIMP_IMAGE_COLORMAP_SIZE];
gint i, j;
diff --git a/app/dialogs/convert-indexed-dialog.c b/app/dialogs/convert-indexed-dialog.c
index be389d7ca9..b1968d2203 100644
--- a/app/dialogs/convert-indexed-dialog.c
+++ b/app/dialogs/convert-indexed-dialog.c
@@ -60,6 +60,7 @@ struct _IndexedDialog
GtkWidget *dialog;
GimpContext *context;
GimpContainer *container;
+ GtkWidget *duplicates_toggle;
};
@@ -73,6 +74,9 @@ static gboolean convert_dialog_palette_filter (GimpObject *object,
static void convert_dialog_palette_changed (GimpContext *context,
GimpPalette *palette,
IndexedDialog *private);
+static void convert_dialog_type_update (GtkWidget *widget,
+ IndexedDialog *private);
+
/* public functions */
@@ -172,8 +176,8 @@ convert_indexed_dialog_new (GimpImage *image,
GIMP_CONVERT_PALETTE_CUSTOM :
GIMP_CONVERT_PALETTE_MONO),
gtk_label_new (_("Colormap")),
- G_CALLBACK (gimp_radio_button_update),
- &private->palette_type,
+ G_CALLBACK (convert_dialog_type_update),
+ private,
&button);
gimp_int_radio_group_set_active (GTK_RADIO_BUTTON (button),
@@ -216,21 +220,22 @@ convert_indexed_dialog_new (GimpImage *image,
vbox = gtk_bin_get_child (GTK_BIN (frame));
- toggle = gtk_check_button_new_with_mnemonic (_("_Remove unused and duplicate "
- "colors from colormap"));
+ private->duplicates_toggle = toggle =
+ gtk_check_button_new_with_mnemonic (_("_Remove unused and duplicate "
+ "colors from colormap"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
private->remove_duplicates);
gtk_box_pack_start (GTK_BOX (vbox), toggle, FALSE, FALSE, 3);
gtk_widget_show (toggle);
+ if (private->palette_type == GIMP_CONVERT_PALETTE_GENERATE ||
+ private->palette_type == GIMP_CONVERT_PALETTE_MONO)
+ gtk_widget_set_sensitive (toggle, FALSE);
+
g_signal_connect (toggle, "toggled",
G_CALLBACK (gimp_toggle_button_update),
&private->remove_duplicates);
- g_object_bind_property (button, "active",
- toggle, "sensitive",
- G_BINDING_SYNC_CREATE | G_BINDING_INVERT_BOOLEAN);
-
/* dithering */
frame = gimp_frame_new (_("Dithering"));
@@ -415,3 +420,17 @@ convert_dialog_palette_changed (GimpContext *context,
private->custom_palette = palette;
}
}
+
+static void
+convert_dialog_type_update (GtkWidget *widget,
+ IndexedDialog *private)
+{
+ gimp_radio_button_update (widget, &private->palette_type);
+
+ if (private->duplicates_toggle)
+ gtk_widget_set_sensitive (private->duplicates_toggle,
+ private->palette_type !=
+ GIMP_CONVERT_PALETTE_GENERATE &&
+ private->palette_type !=
+ GIMP_CONVERT_PALETTE_MONO);
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]