From d779c138914167d6cf66f76900a3dad8d7d772b7 Mon Sep 17 00:00:00 2001 From: Jehan Date: Mon, 2 Apr 2018 18:49:23 +0200 Subject: [PATCH] app: do not edit symmetry variables but properties. If variables are edited directly, in some cases, the GUI and the symmetries may end up out-of-sync. The variable can only be edited through property setting. --- app/core/gimpsymmetry-mirror.c | 44 +++++++++++++++++++++------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/app/core/gimpsymmetry-mirror.c b/app/core/gimpsymmetry-mirror.c index 738ae5b6ba..0f7b09ad02 100644 --- a/app/core/gimpsymmetry-mirror.c +++ b/app/core/gimpsymmetry-mirror.c @@ -520,20 +520,24 @@ gimp_mirror_remove_guide (GimpMirror *mirror, guide = (orientation == GIMP_ORIENTATION_HORIZONTAL) ? mirror->horizontal_guide : mirror->vertical_guide; - g_signal_handlers_disconnect_by_func (G_OBJECT (guide), - gimp_mirror_guide_removed_cb, - mirror); - g_signal_handlers_disconnect_by_func (G_OBJECT (guide), - gimp_mirror_guide_position_cb, - mirror); + /* The guide may have already been removed, for instance from GUI. */ + if (guide) + { + g_signal_handlers_disconnect_by_func (G_OBJECT (guide), + gimp_mirror_guide_removed_cb, + mirror); + g_signal_handlers_disconnect_by_func (G_OBJECT (guide), + gimp_mirror_guide_position_cb, + mirror); - gimp_image_remove_guide (image, guide, FALSE); - g_object_unref (guide); + gimp_image_remove_guide (image, guide, FALSE); + g_object_unref (guide); - if (orientation == GIMP_ORIENTATION_HORIZONTAL) - mirror->horizontal_guide = NULL; - else - mirror->vertical_guide = NULL; + if (orientation == GIMP_ORIENTATION_HORIZONTAL) + mirror->horizontal_guide = NULL; + else + mirror->vertical_guide = NULL; + } } static void @@ -554,8 +558,12 @@ gimp_mirror_guide_removed_cb (GObject *object, g_object_unref (mirror->horizontal_guide); mirror->horizontal_guide = NULL; - mirror->horizontal_mirror = FALSE; - mirror->point_symmetry = FALSE; + g_object_set (mirror, + "horizontal-symmetry", FALSE, + NULL); + g_object_set (mirror, + "point-symmetry", FALSE, + NULL); g_object_set (mirror, "mirror-position-y", 0.0, NULL); @@ -581,8 +589,12 @@ gimp_mirror_guide_removed_cb (GObject *object, g_object_unref (mirror->vertical_guide); mirror->vertical_guide = NULL; - mirror->vertical_mirror = FALSE; - mirror->point_symmetry = FALSE; + g_object_set (mirror, + "vertical-symmetry", FALSE, + NULL); + g_object_set (mirror, + "point-symmetry", FALSE, + NULL); g_object_set (mirror, "mirror-position-x", 0.0, NULL);