mirror of https://github.com/GNOME/gimp.git
Issue #9147: freeze when switching from multi-window to single window mode.
Don't keep bindings to still existing objects. We were ending up in some ugly
infinite looping.
(cherry picked from commit bddcd5c268
)
This commit is contained in:
parent
18c21abf0c
commit
d5f845e35a
|
@ -104,6 +104,8 @@ struct _GimpColorScales
|
|||
GimpColorSelector parent_instance;
|
||||
|
||||
gboolean show_rgb_u8;
|
||||
GBinding *show_rgb_u8_binding;
|
||||
GBinding *show_hsv_binding;
|
||||
|
||||
GtkWidget *lch_group;
|
||||
GtkWidget *hsv_group;
|
||||
|
@ -374,6 +376,9 @@ gimp_color_scales_init (GimpColorScales *scales)
|
|||
|
||||
gtk_box_set_spacing (GTK_BOX (scales), 5);
|
||||
|
||||
scales->show_rgb_u8_binding = NULL;
|
||||
scales->show_hsv_binding = NULL;
|
||||
|
||||
/* don't need the toggles for our own operation */
|
||||
selector->toggles_visible = FALSE;
|
||||
|
||||
|
@ -499,6 +504,9 @@ gimp_color_scales_dispose (GObject *object)
|
|||
|
||||
g_clear_object (&scales->dummy_u8_toggle);
|
||||
|
||||
g_clear_pointer (&scales->show_rgb_u8_binding, g_binding_unbind);
|
||||
g_clear_pointer (&scales->show_hsv_binding, g_binding_unbind);
|
||||
|
||||
G_OBJECT_CLASS (parent_class)->dispose (object);
|
||||
}
|
||||
|
||||
|
@ -636,14 +644,17 @@ gimp_color_scales_set_config (GimpColorSelector *selector,
|
|||
GimpColorScales *scales = GIMP_COLOR_SCALES (selector);
|
||||
gint i;
|
||||
|
||||
g_clear_pointer (&scales->show_rgb_u8_binding, g_binding_unbind);
|
||||
g_clear_pointer (&scales->show_hsv_binding, g_binding_unbind);
|
||||
|
||||
if (config)
|
||||
{
|
||||
g_object_bind_property (config, "show-rgb-u8",
|
||||
scales, "show-rgb-u8",
|
||||
G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
|
||||
g_object_bind_property (config, "show-hsv",
|
||||
scales, "show-hsv",
|
||||
G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
|
||||
scales->show_rgb_u8_binding = g_object_bind_property (config, "show-rgb-u8",
|
||||
scales, "show-rgb-u8",
|
||||
G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
|
||||
scales->show_hsv_binding = g_object_bind_property (config, "show-hsv",
|
||||
scales, "show-hsv",
|
||||
G_BINDING_SYNC_CREATE | G_BINDING_BIDIRECTIONAL);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue