Commit: 37560e77e8919a47f6607af5dfb356a8fa70a6f8
Author: Bastien Montagne
Date:   Thu Jun 23 16:43:12 2016 +0200
Branches: master
https://developer.blender.org/rB37560e77e8919a47f6607af5dfb356a8fa70a6f8

Fix T48689: Transform proportional size was not seriously clamped.

Now use same, reasonable min/max values, to avoid getting inf or zero values 
when
using shortcuts during transform operation...

===================================================================

M       source/blender/editors/transform/transform.c
M       source/blender/editors/transform/transform.h
M       source/blender/editors/transform/transform_ops.c

===================================================================

diff --git a/source/blender/editors/transform/transform.c 
b/source/blender/editors/transform/transform.c
index 74ed201..7671154 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -1202,8 +1202,12 @@ int transformEvent(TransInfo *t, const wmEvent *event)
                                if (t->flag & T_PROP_EDIT) {
                                        float fac = 1.0f + 0.005f *(event->y - 
event->prevy);
                                        t->prop_size *= fac;
-                                       if (t->spacetype == SPACE_VIEW3D && 
t->persp != RV3D_ORTHO)
-                                               t->prop_size = 
min_ff(t->prop_size, ((View3D *)t->view)->far);
+                                       if (t->spacetype == SPACE_VIEW3D && 
t->persp != RV3D_ORTHO) {
+                                               t->prop_size = 
max_ff(min_ff(t->prop_size, ((View3D *)t->view)->far), T_PROP_SIZE_MIN);
+                                       }
+                                       else {
+                                               t->prop_size = 
max_ff(min_ff(t->prop_size, T_PROP_SIZE_MAX), T_PROP_SIZE_MIN);
+                                       }
                                        calculatePropRatio(t);
                                        t->redraw |= TREDRAW_HARD;
                                        handled = true;
@@ -1212,8 +1216,12 @@ int transformEvent(TransInfo *t, const wmEvent *event)
                        case TFM_MODAL_PROPSIZE_UP:
                                if (t->flag & T_PROP_EDIT) {
                                        t->prop_size *= (t->modifiers & 
MOD_PRECISION) ? 1.01f : 1.1f;
-                                       if (t->spacetype == SPACE_VIEW3D && 
t->persp != RV3D_ORTHO)
+                                       if (t->spacetype == SPACE_VIEW3D && 
t->persp != RV3D_ORTHO) {
                                                t->prop_size = 
min_ff(t->prop_size, ((View3D *)t->view)->far);
+                                       }
+                                       else {
+                                               t->prop_size = 
min_ff(t->prop_size, T_PROP_SIZE_MAX);
+                                       }
                                        calculatePropRatio(t);
                                        t->redraw |= TREDRAW_HARD;
                                        handled = true;
@@ -1222,6 +1230,7 @@ int transformEvent(TransInfo *t, const wmEvent *event)
                        case TFM_MODAL_PROPSIZE_DOWN:
                                if (t->flag & T_PROP_EDIT) {
                                        t->prop_size /= (t->modifiers & 
MOD_PRECISION) ? 1.01f : 1.1f;
+                                       t->prop_size = max_ff(t->prop_size, 
T_PROP_SIZE_MIN);
                                        calculatePropRatio(t);
                                        t->redraw |= TREDRAW_HARD;
                                        handled = true;
diff --git a/source/blender/editors/transform/transform.h 
b/source/blender/editors/transform/transform.h
index 0e0d085..50168e7 100644
--- a/source/blender/editors/transform/transform.h
+++ b/source/blender/editors/transform/transform.h
@@ -592,6 +592,10 @@ typedef struct TransInfo {
 #define POINT_INIT             4
 #define MULTI_POINTS   8
 
+/* Hard min/max for proportional size. */
+#define T_PROP_SIZE_MIN 1e-6f
+#define T_PROP_SIZE_MAX 1e12f
+
 bool initTransform(struct bContext *C, struct TransInfo *t, struct wmOperator 
*op, const struct wmEvent *event, int mode);
 void saveTransform(struct bContext *C, struct TransInfo *t, struct wmOperator 
*op);
 int  transformEvent(TransInfo *t, const struct wmEvent *event);
diff --git a/source/blender/editors/transform/transform_ops.c 
b/source/blender/editors/transform/transform_ops.c
index 2fb92d7..6e399d9 100644
--- a/source/blender/editors/transform/transform_ops.c
+++ b/source/blender/editors/transform/transform_ops.c
@@ -528,7 +528,8 @@ void Transform_Properties(struct wmOperatorType *ot, int 
flags)
                prop = RNA_def_enum(ot->srna, "proportional_edit_falloff", 
rna_enum_proportional_falloff_items, 0,
                                    "Proportional Editing Falloff", "Falloff 
type for proportional editing mode");
                RNA_def_property_translation_context(prop, 
BLT_I18NCONTEXT_ID_CURVE); /* Abusing id_curve :/ */
-               RNA_def_float(ot->srna, "proportional_size", 1, 0.00001f, 
FLT_MAX, "Proportional Size", "", 0.001, 100);
+               RNA_def_float(ot->srna, "proportional_size", 1, 
T_PROP_SIZE_MIN, T_PROP_SIZE_MAX,
+                             "Proportional Size", "", 0.001f, 100.0f);
        }
 
        if (flags & P_SNAP) {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to