[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41024] trunk/blender/source/blender/ editors/interface: fix UI jump in normal buttons for buttons which didnt start out normalized .

Campbell Barton ideasman42 at gmail.com
Sat Oct 15 11:43:42 CEST 2011


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);
 




More information about the Bf-blender-cvs mailing list