[gimp] app: do not edit symmetry variables but properties.



commit d779c138914167d6cf66f76900a3dad8d7d772b7
Author: Jehan <jehan girinstud io>
Date:   Mon Apr 2 18:49:23 2018 +0200

    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 |   48 +++++++++++++++++++++++++---------------
 1 files changed, 30 insertions(+), 18 deletions(-)
---
diff --git a/app/core/gimpsymmetry-mirror.c b/app/core/gimpsymmetry-mirror.c
index 738ae5b..0f7b09a 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);
-
-  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;
+  /* 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);
+
+      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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]