libgimpwidgets, modules: improve set_color_config() functions a bit

Don't do anything if the config doesn't change.
This commit is contained in:
Michael Natterer 2016-05-31 12:24:58 +02:00
parent 77aedefc9d
commit 4ad2493283
6 changed files with 120 additions and 105 deletions

View File

@ -614,29 +614,32 @@ gimp_color_area_set_color_config (GimpColorArea *area,
priv = GET_PRIVATE (area); priv = GET_PRIVATE (area);
if (priv->config) if (config != priv->config)
{ {
g_signal_handlers_disconnect_by_func (priv->config, if (priv->config)
gimp_color_area_config_notify,
area);
g_object_unref (priv->config);
if (priv->transform)
{ {
g_object_unref (priv->transform); g_signal_handlers_disconnect_by_func (priv->config,
priv->transform = NULL; 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) if (priv->config)
{ {
g_object_ref (priv->config); g_object_ref (priv->config);
g_signal_connect (priv->config, "notify", g_signal_connect (priv->config, "notify",
G_CALLBACK (gimp_color_area_config_notify), G_CALLBACK (gimp_color_area_config_notify),
area); area);
}
} }
} }

View File

@ -660,29 +660,32 @@ gimp_color_scale_set_color_config (GimpColorScale *scale,
priv = GET_PRIVATE (scale); priv = GET_PRIVATE (scale);
if (priv->config) if (config != priv->config)
{ {
g_signal_handlers_disconnect_by_func (priv->config, if (priv->config)
gimp_color_scale_config_notify,
scale);
g_object_unref (priv->config);
if (priv->transform)
{ {
g_object_unref (priv->transform); g_signal_handlers_disconnect_by_func (priv->config,
priv->transform = NULL; 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) if (priv->config)
{ {
g_object_ref (priv->config); g_object_ref (priv->config);
g_signal_connect (priv->config, "notify", g_signal_connect (priv->config, "notify",
G_CALLBACK (gimp_color_scale_config_notify), G_CALLBACK (gimp_color_scale_config_notify),
scale); scale);
}
} }
} }

View File

@ -1799,29 +1799,32 @@ gimp_preview_area_set_color_config (GimpPreviewArea *area,
priv = GET_PRIVATE (area); priv = GET_PRIVATE (area);
if (priv->config) if (config != priv->config)
{ {
g_signal_handlers_disconnect_by_func (priv->config, if (priv->config)
gimp_preview_area_config_notify,
area);
g_object_unref (priv->config);
if (priv->transform)
{ {
g_object_unref (priv->transform); g_signal_handlers_disconnect_by_func (priv->config,
priv->transform = NULL; 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) if (priv->config)
{ {
g_object_ref (priv->config); g_object_ref (priv->config);
g_signal_connect (priv->config, "notify", g_signal_connect (priv->config, "notify",
G_CALLBACK (gimp_preview_area_config_notify), G_CALLBACK (gimp_preview_area_config_notify),
area); area);
}
} }
} }

View File

@ -268,28 +268,28 @@ colorsel_cmyk_set_config (GimpColorSelector *selector,
{ {
ColorselCmyk *module = COLORSEL_CMYK (selector); ColorselCmyk *module = COLORSEL_CMYK (selector);
if (config == module->config) if (config != module->config)
return;
if (module->config)
{ {
g_signal_handlers_disconnect_by_func (module->config, if (module->config)
G_CALLBACK (colorsel_cmyk_config_changed), {
module); g_signal_handlers_disconnect_by_func (module->config,
g_object_unref (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 static void

View File

@ -230,29 +230,32 @@ colorsel_water_set_config (GimpColorSelector *selector,
{ {
ColorselWater *water = COLORSEL_WATER (selector); ColorselWater *water = COLORSEL_WATER (selector);
if (water->config) if (config != water->config)
{ {
g_signal_handlers_disconnect_by_func (water->config, if (water->config)
colorsel_water_config_notify,
water);
g_object_unref (water->config);
if (water->transform)
{ {
g_object_unref (water->transform); g_signal_handlers_disconnect_by_func (water->config,
water->transform = NULL; 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) if (water->config)
{ {
g_object_ref (water->config); g_object_ref (water->config);
g_signal_connect (water->config, "notify", g_signal_connect (water->config, "notify",
G_CALLBACK (colorsel_water_config_notify), G_CALLBACK (colorsel_water_config_notify),
water); water);
}
} }
} }

View File

@ -1462,29 +1462,32 @@ gimp_color_wheel_set_color_config (GimpColorWheel *wheel,
priv = wheel->priv; priv = wheel->priv;
if (priv->config) if (config != priv->config)
{ {
g_signal_handlers_disconnect_by_func (priv->config, if (priv->config)
gimp_color_wheel_config_notify,
wheel);
g_object_unref (priv->config);
if (priv->transform)
{ {
g_object_unref (priv->transform); g_signal_handlers_disconnect_by_func (priv->config,
priv->transform = NULL; 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) if (priv->config)
{ {
g_object_ref (priv->config); g_object_ref (priv->config);
g_signal_connect (priv->config, "notify", g_signal_connect (priv->config, "notify",
G_CALLBACK (gimp_color_wheel_config_notify), G_CALLBACK (gimp_color_wheel_config_notify),
wheel); wheel);
}
} }
} }