From 659cf3743e3c48e18a08ba41c83c7ef77c841410 Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sun, 8 Nov 2009 14:22:26 +0100 Subject: [PATCH] Bug 593848 - FG color changed to black when FG-BG Editor tab created When a color gets set on the module via GimpColorSelector::set_color(), make sure that the result of its transformation to CMYK doesn't get set back on GIMP. Also, when the color profile changes, make sure we only re-transform the RGB value to CMYK and don't set that result back on GIMP either. --- modules/color-selector-cmyk-lcms.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/color-selector-cmyk-lcms.c b/modules/color-selector-cmyk-lcms.c index d468908892..0d5d20f6d0 100644 --- a/modules/color-selector-cmyk-lcms.c +++ b/modules/color-selector-cmyk-lcms.c @@ -244,6 +244,8 @@ colorsel_cmyk_set_color (GimpColorSelector *selector, const GimpHSV *hsv) { ColorselCmyk *module = COLORSEL_CMYK (selector); + gdouble values[4]; + gint i; if (module->rgb2cmyk) { @@ -266,10 +268,23 @@ colorsel_cmyk_set_color (GimpColorSelector *selector, gimp_rgb_to_cmyk (rgb, 1.0, &module->cmyk); } - gtk_adjustment_set_value (module->adj[0], module->cmyk.c * 100.0); - gtk_adjustment_set_value (module->adj[1], module->cmyk.m * 100.0); - gtk_adjustment_set_value (module->adj[2], module->cmyk.y * 100.0); - gtk_adjustment_set_value (module->adj[3], module->cmyk.k * 100.0); + values[0] = module->cmyk.c * 100.0; + values[1] = module->cmyk.m * 100.0; + values[2] = module->cmyk.y * 100.0; + values[3] = module->cmyk.k * 100.0; + + for (i = 0; i < 4; i++) + { + g_signal_handlers_block_by_func (module->adj[i], + colorsel_cmyk_adj_update, + module); + + gtk_adjustment_set_value (module->adj[i], values[i]); + + g_signal_handlers_unblock_by_func (module->adj[i], + colorsel_cmyk_adj_update, + module); + } } static void @@ -442,5 +457,5 @@ colorsel_cmyk_config_changed (ColorselCmyk *module) out: if (! module->in_destruction) - gimp_color_selector_set_color (selector, &selector->rgb, &selector->hsv); + colorsel_cmyk_set_color (selector, &selector->rgb, &selector->hsv); }