[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25265] trunk/blender/source/blender/ editors/interface/interface_handlers.c: Revert bunch of changes I should have committed before.

Martin Poirier theeth at yahoo.com
Thu Dec 10 01:41:03 CET 2009


Revision: 25265
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25265
Author:   theeth
Date:     2009-12-10 01:41:03 +0100 (Thu, 10 Dec 2009)

Log Message:
-----------
Revert bunch of changes I should have committed before.

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

Modified: trunk/blender/source/blender/editors/interface/interface_handlers.c
===================================================================
--- trunk/blender/source/blender/editors/interface/interface_handlers.c	2009-12-10 00:28:18 UTC (rev 25264)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2009-12-10 00:41:03 UTC (rev 25265)
@@ -71,6 +71,78 @@
 #define BUTTON_AUTO_OPEN_THRESH		0.3
 #define BUTTON_MOUSE_TOWARDS_THRESH	1.0
 
+typedef enum uiButtonActivateType {
+	BUTTON_ACTIVATE_OVER,
+	BUTTON_ACTIVATE,
+	BUTTON_ACTIVATE_APPLY,
+	BUTTON_ACTIVATE_TEXT_EDITING,
+	BUTTON_ACTIVATE_OPEN
+} uiButtonActivateType;
+
+typedef enum uiHandleButtonState {
+	BUTTON_STATE_INIT,
+	BUTTON_STATE_HIGHLIGHT,
+	BUTTON_STATE_WAIT_FLASH,
+	BUTTON_STATE_WAIT_RELEASE,
+	BUTTON_STATE_WAIT_KEY_EVENT,
+	BUTTON_STATE_NUM_EDITING,
+	BUTTON_STATE_TEXT_EDITING,
+	BUTTON_STATE_TEXT_SELECTING,
+	BUTTON_STATE_MENU_OPEN,
+	BUTTON_STATE_EXIT
+} uiHandleButtonState;
+
+typedef struct uiHandleButtonData {
+	wmWindowManager *wm;
+	wmWindow *window;
+	ARegion *region;
+
+	int interactive;
+
+	/* overall state */
+	uiHandleButtonState state;
+	int cancel, escapecancel, retval;
+	int applied, appliedinteractive;
+	wmTimer *flashtimer;
+
+	/* edited value */
+	char *str, *origstr;
+	double value, origvalue, startvalue;
+	float vec[3], origvec[3];
+	int togdual, togonly;
+	ColorBand *coba;
+	CurveMapping *cumap;
+
+	/* tooltip */
+	ARegion *tooltip;
+	wmTimer *tooltiptimer;
+	
+	/* auto open */
+	int used_mouse;
+	wmTimer *autoopentimer;
+
+	/* text selection/editing */
+	int maxlen, selextend, selstartx;
+
+	/* number editing / dragging */
+	int draglastx, draglasty;
+	int dragstartx, dragstarty;
+	int dragchange, draglock, dragsel;
+	float dragf, dragfstart;
+	CBData *dragcbd;
+
+	/* menu open */
+	uiPopupBlockHandle *menu;
+	int menuretval;
+	
+	/* search box */
+	ARegion *searchbox;
+
+	/* post activate */
+	uiButtonActivateType posttype;
+	uiBut *postbut;
+} uiHandleButtonData;
+
 typedef struct uiAfterFunc {
 	struct uiAfterFunc *next, *prev;
 
@@ -1339,7 +1411,7 @@
 
 	/* retrieve string */
 	data->maxlen= ui_get_but_string_max_length(but);
-	data->str= MEM_callocN(sizeof(char)*data->maxlen + 1, "textedit str"); /* +1 for terminator */
+	data->str= MEM_callocN(sizeof(char)*data->maxlen + 1, "textedit str");
 	ui_get_but_string(but, data->str, data->maxlen);
 
 	data->origstr= BLI_strdup(data->str);
@@ -1617,7 +1689,7 @@
 
 static void ui_numedit_begin(uiBut *but, uiHandleButtonData *data)
 {
-	float softmin, softmax;
+	float softrange, softmin, softmax;
 
 	if(but->type == BUT_CURVE) {
 		data->cumap= (CurveMapping*)but->poin;
@@ -1640,9 +1712,9 @@
 
 		softmin= but->softmin;
 		softmax= but->softmax;
-		data->softrange = (float)pow(10, floorf(log10(softmax - softmin) + 0.5));
+		softrange= softmax - softmin;
 
-		data->dragfstart= (data->softrange == 0.0)? 0.0: (data->value - softmin)/data->softrange;
+		data->dragfstart= (softrange == 0.0)? 0.0: (data->value - softmin)/softrange;
 		data->dragf= data->dragfstart;
 	}
 
@@ -1964,16 +2036,12 @@
 	return temp;
 }
 
-static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, int snap, int mx, int my)
+static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, int snap, int mx)
 {
-	float deler, tempf, softmin, softmax;
-	//float ladder = powf(10.0, floorf((my - data->dragstarty + 25) / 50.0f));
-	float ladder = 1.0f;
+	float deler, tempf, softmin, softmax, softrange;
 	int lvalue, temp, changed= 0;
 	
-	printf("(%i, %i)\n", mx, my);
-
-	if(mx == data->draglastx && my == data->draglasty)
+	if(mx == data->draglastx)
 		return changed;
 	
 	/* drag-lock - prevent unwanted scroll adjustments */
@@ -1988,14 +2056,16 @@
 
 	softmin= but->softmin;
 	softmax= but->softmax;
+	softrange= softmax - softmin;
 
+
 	if(ui_is_a_warp_but(but)) {
 		/* Mouse location isn't screen clamped to the screen so use a linear mapping
 		 * 2px == 1-int, or 1px == 1-ClickStep */
 		if(ui_is_but_float(but)) {
 			fac *= 0.01*but->a1;
-			tempf = data->startvalue + ((mx - data->dragstartx) * fac) * ladder;
-			tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, data->softrange, snap);
+			tempf = data->startvalue + ((mx - data->dragstartx) * fac);
+			tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, softrange, snap);
 
 #if 1		/* fake moving the click start, nicer for dragging back after passing the limit */
 			if(tempf < softmin) {
@@ -2018,12 +2088,8 @@
 		else {
 			fac = 0.5; /* simple 2px == 1 */
 
-			temp= data->startvalue + floorf((mx - data->dragstartx) * fac) * ladder;
+			temp= data->startvalue + ((mx - data->dragstartx) * fac);
 			temp= ui_numedit_apply_snap(temp, softmin, softmax, snap);
-			
-//			printf("x %i y %i\n", mx, my);
-//			printf("temp %i, dragstartx %i ladder %f\n", temp, data->dragstartx, ladder);
-			
 
 #if 1		/* fake moving the click start, nicer for dragging back after passing the limit */
 			if(temp < softmin) {
@@ -2043,31 +2109,33 @@
 				changed= 1;
 			}
 		}
+
+		data->draglastx= mx;
 	}
 	else {
 		/* Use a non-linear mapping of the mouse drag especially for large floats (normal behavior) */
-		deler= 1000;
+		deler= 500;
 		if(!ui_is_but_float(but)) {
-			if((data->softrange)<100) deler= 200.0;
-			if((data->softrange)<25) deler= 50.0;
+			if((softrange)<100) deler= 200.0;
+			if((softrange)<25) deler= 50.0;
 		}
 		deler /= fac;
 
-		if(ui_is_but_float(but) && data->softrange > 11) {
+		if(ui_is_but_float(but) && softrange > 11) {
 			/* non linear change in mouse input- good for high precicsion */
-			data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.002)*ladder;
-		} else if (!ui_is_but_float(but) && data->softrange > 129) { /* only scale large int buttons */
+			data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.002);
+		} else if (!ui_is_but_float(but) && softrange > 129) { /* only scale large int buttons */
 			/* non linear change in mouse input- good for high precicsionm ints need less fine tuning */
-			data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.004)*ladder;
+			data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.004);
 		} else {
 			/*no scaling */
-			data->dragf+= ((float)(mx-data->draglastx))/deler*ladder ;
+			data->dragf+= ((float)(mx-data->draglastx))/deler ;
 		}
 	
-		tempf= (softmin + data->dragf*data->softrange);
-		
-		if (tempf > softmax) data->dragf = (softmax - softmin) / data->softrange;
-		if (tempf < softmin) data->dragf = softmin / data->softrange;
+		if(data->dragf>1.0) data->dragf= 1.0;
+		if(data->dragf<0.0) data->dragf= 0.0;
+		data->draglastx= mx;
+		tempf= (softmin + data->dragf*softrange);
 
 
 		if(!ui_is_but_float(but)) {
@@ -2086,7 +2154,7 @@
 		}
 		else {
 			temp= 0;
-			tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, data->softrange, snap);
+			tempf= ui_numedit_apply_snapf(tempf, softmin, softmax, softrange, snap);
 
 			CLAMP(tempf, softmin, softmax);
 
@@ -2098,8 +2166,6 @@
 		}
 	}
 
-	data->draglastx= mx;
-	data->draglasty= my;
 
 	return changed;
 }
@@ -2133,7 +2199,6 @@
 			}
 			else if(event->type == LEFTMOUSE) {
 				data->dragstartx= data->draglastx= ui_is_a_warp_but(but) ? screen_mx:mx;
-				data->dragstarty= data->draglasty= ui_is_a_warp_but(but) ? screen_my:my;
 				button_activate_state(C, but, BUTTON_STATE_NUM_EDITING);
 				retval= WM_UI_HANDLER_BREAK;
 			}
@@ -2164,7 +2229,7 @@
 			
 			snap= (event->ctrl)? (event->shift)? 2: 1: 0;
 
-			if(ui_numedit_but_NUM(but, data, fac, snap, (ui_is_a_warp_but(but) ? screen_mx:mx), (ui_is_a_warp_but(but) ? screen_my:my)))
+			if(ui_numedit_but_NUM(but, data, fac, snap, (ui_is_a_warp_but(but) ? screen_mx:mx)))
 				ui_numedit_apply(C, block, but, data);
 		}
 		retval= WM_UI_HANDLER_BREAK;
@@ -2244,11 +2309,12 @@
 
 static int ui_numedit_but_SLI(uiBut *but, uiHandleButtonData *data, int shift, int ctrl, int mx)
 {
-	float deler, f, tempf, softmin, softmax;
+	float deler, f, tempf, softmin, softmax, softrange;
 	int temp, lvalue, changed= 0;
 
 	softmin= but->softmin;
 	softmax= but->softmax;
+	softrange= softmax - softmin;
 
 	if(but->type==NUMSLI) deler= ((but->x2-but->x1) - 5.0*but->aspect);
 	else if(but->type==HSVSLI) deler= ((but->x2-but->x1)/2 - 5.0*but->aspect);
@@ -2264,8 +2330,8 @@
 	if(shift)
 		f= (f-data->dragfstart)/10.0 + data->dragfstart;
 
-	//CLAMP(f, 0.0, 1.0);
-	tempf= softmin + f * data->softrange;
+	CLAMP(f, 0.0, 1.0);
+	tempf= softmin + f*softrange;
 	temp= floor(tempf+.5);
 
 	if(ctrl) {
@@ -2349,9 +2415,7 @@
 			}
 			else if(event->type == LEFTMOUSE) {
 				data->dragstartx= mx;
-				data->dragstarty= my;
 				data->draglastx= mx;
-				data->draglasty= my;
 				button_activate_state(C, but, BUTTON_STATE_NUM_EDITING);
 				retval= WM_UI_HANDLER_BREAK;
 			}
@@ -2389,13 +2453,14 @@
 	if(click) {
 		if (click==2) {
 			/* nudge slider to the left or right */
-			float f, tempf, softmin, softmax;
+			float f, tempf, softmin, softmax, softrange;
 			int temp;
 			
 			button_activate_state(C, but, BUTTON_STATE_NUM_EDITING);
 			
 			softmin= but->softmin;
 			softmax= but->softmax;
+			softrange= softmax - softmin;
 			
 			tempf= data->value;
 			temp= (int)data->value;
@@ -2404,7 +2469,7 @@
 			if(but->type==SLI) f= (float)(mx-but->x1)/(but->x2-but->x1);
 			else f= (float)(mx- but->x1)/(but->x2-but->x1);
 			
-			f= softmin + f * data->softrange;
+			f= softmin + f*softrange;
 			
 			if(!ui_is_but_float(but)) {
 				if(f<temp) temp--;
@@ -2451,10 +2516,14 @@
 	if(data->state == BUTTON_STATE_HIGHLIGHT) {
 		if(event->val==KM_PRESS) {
 			if(event->type == LEFTMOUSE) {
-				data->dragstartx= mx;
-				data->draglastx= mx;
-				data->dragstartx= my;
-				data->draglastx= my;
+				if(horizontal) {
+					data->dragstartx= mx;
+					data->draglastx= mx;
+				}
+				else {
+					data->dragstartx= my;
+					data->draglastx= my;
+				}
 				button_activate_state(C, but, BUTTON_STATE_NUM_EDITING);
 				retval= WM_UI_HANDLER_BREAK;
 			}





More information about the Bf-blender-cvs mailing list