diff --git a/libgimpwidgets/gimpcolorarea.c b/libgimpwidgets/gimpcolorarea.c index a4612b9230..ac70f7fcd9 100644 --- a/libgimpwidgets/gimpcolorarea.c +++ b/libgimpwidgets/gimpcolorarea.c @@ -614,29 +614,32 @@ gimp_color_area_set_color_config (GimpColorArea *area, priv = GET_PRIVATE (area); - if (priv->config) + if (config != priv->config) { - g_signal_handlers_disconnect_by_func (priv->config, - gimp_color_area_config_notify, - area); - g_object_unref (priv->config); - - if (priv->transform) + if (priv->config) { - g_object_unref (priv->transform); - priv->transform = NULL; + g_signal_handlers_disconnect_by_func (priv->config, + gimp_color_area_config_notify, + area); + g_object_unref (priv->config); + + if (priv->transform) + { + g_object_unref (priv->transform); + priv->transform = NULL; + } } - } - priv->config = config; + priv->config = config; - if (priv->config) - { - g_object_ref (priv->config); + if (priv->config) + { + g_object_ref (priv->config); - g_signal_connect (priv->config, "notify", - G_CALLBACK (gimp_color_area_config_notify), - area); + g_signal_connect (priv->config, "notify", + G_CALLBACK (gimp_color_area_config_notify), + area); + } } } diff --git a/libgimpwidgets/gimpcolorscale.c b/libgimpwidgets/gimpcolorscale.c index 690dbfbc6a..22e1befd64 100644 --- a/libgimpwidgets/gimpcolorscale.c +++ b/libgimpwidgets/gimpcolorscale.c @@ -660,29 +660,32 @@ gimp_color_scale_set_color_config (GimpColorScale *scale, priv = GET_PRIVATE (scale); - if (priv->config) + if (config != priv->config) { - g_signal_handlers_disconnect_by_func (priv->config, - gimp_color_scale_config_notify, - scale); - g_object_unref (priv->config); - - if (priv->transform) + if (priv->config) { - g_object_unref (priv->transform); - priv->transform = NULL; + g_signal_handlers_disconnect_by_func (priv->config, + gimp_color_scale_config_notify, + scale); + g_object_unref (priv->config); + + if (priv->transform) + { + g_object_unref (priv->transform); + priv->transform = NULL; + } } - } - priv->config = config; + priv->config = config; - if (priv->config) - { - g_object_ref (priv->config); + if (priv->config) + { + g_object_ref (priv->config); - g_signal_connect (priv->config, "notify", - G_CALLBACK (gimp_color_scale_config_notify), - scale); + g_signal_connect (priv->config, "notify", + G_CALLBACK (gimp_color_scale_config_notify), + scale); + } } } diff --git a/libgimpwidgets/gimppreviewarea.c b/libgimpwidgets/gimppreviewarea.c index 62514a482e..5cb38ef8b3 100644 --- a/libgimpwidgets/gimppreviewarea.c +++ b/libgimpwidgets/gimppreviewarea.c @@ -1799,29 +1799,32 @@ gimp_preview_area_set_color_config (GimpPreviewArea *area, priv = GET_PRIVATE (area); - if (priv->config) + if (config != priv->config) { - g_signal_handlers_disconnect_by_func (priv->config, - gimp_preview_area_config_notify, - area); - g_object_unref (priv->config); - - if (priv->transform) + if (priv->config) { - g_object_unref (priv->transform); - priv->transform = NULL; + g_signal_handlers_disconnect_by_func (priv->config, + gimp_preview_area_config_notify, + area); + g_object_unref (priv->config); + + if (priv->transform) + { + g_object_unref (priv->transform); + priv->transform = NULL; + } } - } - priv->config = config; + priv->config = config; - if (priv->config) - { - g_object_ref (priv->config); + if (priv->config) + { + g_object_ref (priv->config); - g_signal_connect (priv->config, "notify", - G_CALLBACK (gimp_preview_area_config_notify), - area); + g_signal_connect (priv->config, "notify", + G_CALLBACK (gimp_preview_area_config_notify), + area); + } } } diff --git a/modules/color-selector-cmyk.c b/modules/color-selector-cmyk.c index 418089ef24..b9e1107918 100644 --- a/modules/color-selector-cmyk.c +++ b/modules/color-selector-cmyk.c @@ -268,28 +268,28 @@ colorsel_cmyk_set_config (GimpColorSelector *selector, { ColorselCmyk *module = COLORSEL_CMYK (selector); - if (config == module->config) - return; - - if (module->config) + if (config != module->config) { - g_signal_handlers_disconnect_by_func (module->config, - G_CALLBACK (colorsel_cmyk_config_changed), - module); - g_object_unref (module->config); + if (module->config) + { + g_signal_handlers_disconnect_by_func (module->config, + colorsel_cmyk_config_changed, + module); + g_object_unref (module->config); + } + + module->config = config; + + if (module->config) + { + g_object_ref (module->config); + g_signal_connect_swapped (module->config, "notify", + G_CALLBACK (colorsel_cmyk_config_changed), + module); + } + + colorsel_cmyk_config_changed (module); } - - module->config = config; - - if (module->config) - { - g_object_ref (module->config); - g_signal_connect_swapped (module->config, "notify", - G_CALLBACK (colorsel_cmyk_config_changed), - module); - } - - colorsel_cmyk_config_changed (module); } static void diff --git a/modules/color-selector-water.c b/modules/color-selector-water.c index 4538239d49..f714374aa6 100644 --- a/modules/color-selector-water.c +++ b/modules/color-selector-water.c @@ -230,29 +230,32 @@ colorsel_water_set_config (GimpColorSelector *selector, { ColorselWater *water = COLORSEL_WATER (selector); - if (water->config) + if (config != water->config) { - g_signal_handlers_disconnect_by_func (water->config, - colorsel_water_config_notify, - water); - g_object_unref (water->config); - - if (water->transform) + if (water->config) { - g_object_unref (water->transform); - water->transform = NULL; + g_signal_handlers_disconnect_by_func (water->config, + colorsel_water_config_notify, + water); + g_object_unref (water->config); + + if (water->transform) + { + g_object_unref (water->transform); + water->transform = NULL; + } } - } - water->config = config; + water->config = config; - if (water->config) - { - g_object_ref (water->config); + if (water->config) + { + g_object_ref (water->config); - g_signal_connect (water->config, "notify", - G_CALLBACK (colorsel_water_config_notify), - water); + g_signal_connect (water->config, "notify", + G_CALLBACK (colorsel_water_config_notify), + water); + } } } diff --git a/modules/gimpcolorwheel.c b/modules/gimpcolorwheel.c index 19fb23375f..4527fc2bc7 100644 --- a/modules/gimpcolorwheel.c +++ b/modules/gimpcolorwheel.c @@ -1462,29 +1462,32 @@ gimp_color_wheel_set_color_config (GimpColorWheel *wheel, priv = wheel->priv; - if (priv->config) + if (config != priv->config) { - g_signal_handlers_disconnect_by_func (priv->config, - gimp_color_wheel_config_notify, - wheel); - g_object_unref (priv->config); - - if (priv->transform) + if (priv->config) { - g_object_unref (priv->transform); - priv->transform = NULL; + g_signal_handlers_disconnect_by_func (priv->config, + gimp_color_wheel_config_notify, + wheel); + g_object_unref (priv->config); + + if (priv->transform) + { + g_object_unref (priv->transform); + priv->transform = NULL; + } } - } - priv->config = config; + priv->config = config; - if (priv->config) - { - g_object_ref (priv->config); + if (priv->config) + { + g_object_ref (priv->config); - g_signal_connect (priv->config, "notify", - G_CALLBACK (gimp_color_wheel_config_notify), - wheel); + g_signal_connect (priv->config, "notify", + G_CALLBACK (gimp_color_wheel_config_notify), + wheel); + } } }