[gimp] app: allow the mirror axis position within image's dimensions only.



commit 01073359386670de6d7b08ced940b575b746a469
Author: Jehan <jehan girinstud io>
Date:   Thu Feb 11 17:07:54 2016 +0100

    app: allow the mirror axis position within image's dimensions only.
    
    This is not ideal since the scale widget is crazy huge, thus
    impractical, but the solution used on properties of other symmetries
    (updating min/max of the class property) is wrong since it applies to
    the whole class.
    For the time being, it avoid setting obviously bad values until we
    figure out the ideal automatic UI construction.

 app/core/gimpsymmetry-mirror.c |   52 +++++++++++++++++++++++-----------------
 1 files changed, 30 insertions(+), 22 deletions(-)
---
diff --git a/app/core/gimpsymmetry-mirror.c b/app/core/gimpsymmetry-mirror.c
index f882b93..cf269fa 100644
--- a/app/core/gimpsymmetry-mirror.c
+++ b/app/core/gimpsymmetry-mirror.c
@@ -228,33 +228,41 @@ gimp_mirror_set_property (GObject      *object,
       mirror->disable_transformation = g_value_get_boolean (value);
       break;
     case PROP_HORIZONTAL_POSITION:
-      mirror->horizontal_position = g_value_get_double (value);
-      if (mirror->horizontal_guide)
+      if (g_value_get_double (value) > 0.0 &&
+          g_value_get_double (value) < (gdouble) gimp_image_get_height (image))
         {
-          g_signal_handlers_block_by_func (mirror->horizontal_guide,
-                                           gimp_mirror_guide_position_cb,
-                                           mirror);
-          gimp_image_move_guide (image, mirror->horizontal_guide,
-                                 mirror->horizontal_position,
-                                 FALSE);
-          g_signal_handlers_unblock_by_func (mirror->horizontal_guide,
-                                             gimp_mirror_guide_position_cb,
-                                             mirror);
+          mirror->horizontal_position = g_value_get_double (value);
+          if (mirror->horizontal_guide)
+            {
+              g_signal_handlers_block_by_func (mirror->horizontal_guide,
+                                               gimp_mirror_guide_position_cb,
+                                               mirror);
+              gimp_image_move_guide (image, mirror->horizontal_guide,
+                                     mirror->horizontal_position,
+                                     FALSE);
+              g_signal_handlers_unblock_by_func (mirror->horizontal_guide,
+                                                 gimp_mirror_guide_position_cb,
+                                                 mirror);
+            }
         }
       break;
     case PROP_VERTICAL_POSITION:
-      mirror->vertical_position = g_value_get_double (value);
-      if (mirror->vertical_guide)
+      if (g_value_get_double (value) > 0.0 &&
+          g_value_get_double (value) < (gdouble) gimp_image_get_width (image))
         {
-          g_signal_handlers_block_by_func (mirror->vertical_guide,
-                                           gimp_mirror_guide_position_cb,
-                                           mirror);
-          gimp_image_move_guide (image, mirror->vertical_guide,
-                                 mirror->vertical_position,
-                                 FALSE);
-          g_signal_handlers_unblock_by_func (mirror->vertical_guide,
-                                             gimp_mirror_guide_position_cb,
-                                             mirror);
+          mirror->vertical_position = g_value_get_double (value);
+          if (mirror->vertical_guide)
+            {
+              g_signal_handlers_block_by_func (mirror->vertical_guide,
+                                               gimp_mirror_guide_position_cb,
+                                               mirror);
+              gimp_image_move_guide (image, mirror->vertical_guide,
+                                     mirror->vertical_position,
+                                     FALSE);
+              g_signal_handlers_unblock_by_func (mirror->vertical_guide,
+                                                 gimp_mirror_guide_position_cb,
+                                                 mirror);
+            }
         }
       break;
     default:


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