Revision: 41024
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41024
Author:   campbellbarton
Date:     2011-10-15 09:43:42 +0000 (Sat, 15 Oct 2011)
Log Message:
-----------
fix UI jump in normal buttons for buttons which didnt start out normalized.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/interface/interface.c
    trunk/blender/source/blender/editors/interface/interface_handlers.c
    trunk/blender/source/blender/editors/interface/interface_intern.h

Modified: trunk/blender/source/blender/editors/interface/interface.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface.c  2011-10-15 
07:19:34 UTC (rev 41023)
+++ trunk/blender/source/blender/editors/interface/interface.c  2011-10-15 
09:43:42 UTC (rev 41024)
@@ -1211,7 +1211,7 @@
  * an edit override pointer while dragging for example */
 
 /* for buttons pointing to color for example */
-void ui_get_but_vectorf(uiBut *but, float *vec)
+void ui_get_but_vectorf(uiBut *but, float vec[3])
 {
        PropertyRNA *prop;
        int a, tot;
@@ -1249,16 +1249,20 @@
                        vec[0]= vec[1]= vec[2]= 0.0f;
                }
        }
+
+       if (but->type == BUT_NORMAL) {
+               normalize_v3(vec);
+       }
 }
 
 /* for buttons pointing to color for example */
-void ui_set_but_vectorf(uiBut *but, float *vec)
+void ui_set_but_vectorf(uiBut *but, const float vec[3])
 {
        PropertyRNA *prop;
        int a, tot;
 
        if(but->editvec) {
-               VECCOPY(but->editvec, vec);
+               copy_v3_v3(but->editvec, vec);
        }
 
        if(but->rnaprop) {
@@ -1280,7 +1284,7 @@
        }
        else if(but->pointype == FLO) {
                float *fp= (float *)but->poin;
-               VECCOPY(fp, vec);
+               copy_v3_v3(fp, vec);
        }
 }
 

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c 
2011-10-15 07:19:34 UTC (rev 41023)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c 
2011-10-15 09:43:42 UTC (rev 41024)
@@ -1966,8 +1966,6 @@
 
 static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data)
 {
-       float softrange, softmin, softmax;
-
        if(but->type == BUT_CURVE) {
                but->editcumap= (CurveMapping*)but->poin;
        }
@@ -1977,10 +1975,12 @@
        }
        else if(ELEM3(but->type, BUT_NORMAL, HSVCUBE, HSVCIRCLE)) {
                ui_get_but_vectorf(but, data->origvec);
-               VECCOPY(data->vec, data->origvec);
+               copy_v3_v3(data->vec, data->origvec);
                but->editvec= data->vec;
        }
        else {
+               float softrange, softmin, softmax;
+
                data->startvalue= ui_get_but_val(but);
                data->origvalue= data->startvalue;
                data->value= data->origvalue;
@@ -3004,6 +3004,9 @@
        /* button is presumed square */
        /* if mouse moves outside of sphere, it does negative normal */
 
+       /* note that both data->vec and data->origvec should be normalized
+        * else we'll get a hamrless but annoying jump when first clicking */
+
        fp= data->origvec;
        rad= (but->x2 - but->x1);
        radsq= rad*rad;

Modified: trunk/blender/source/blender/editors/interface/interface_intern.h
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_intern.h   
2011-10-15 07:19:34 UTC (rev 41023)
+++ trunk/blender/source/blender/editors/interface/interface_intern.h   
2011-10-15 09:43:42 UTC (rev 41024)
@@ -350,8 +350,8 @@
 extern double ui_get_but_val(uiBut *but);
 extern void ui_set_but_val(uiBut *but, double value);
 extern void ui_set_but_hsv(uiBut *but);
-extern void ui_get_but_vectorf(uiBut *but, float *vec);
-extern void ui_set_but_vectorf(uiBut *but, float *vec);
+extern void ui_get_but_vectorf(uiBut *but, float vec[3]);
+extern void ui_set_but_vectorf(uiBut *but, const float vec[3]);
 
 extern void ui_hsvcircle_vals_from_pos(float *valrad, float *valdist, rcti 
*rect, float mx, float my);
 

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

Reply via email to