[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40863] trunk/blender/source/blender/ editors/interface/interface_handlers.c: button text editing: home/ end were not moving the cursor position, only the selecton.

Campbell Barton ideasman42 at gmail.com
Sun Oct 9 02:45:27 CEST 2011


Revision: 40863
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40863
Author:   campbellbarton
Date:     2011-10-09 00:45:26 +0000 (Sun, 09 Oct 2011)
Log Message:
-----------
button text editing: home/end were not moving the cursor position, only the selecton.

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	2011-10-09 00:35:31 UTC (rev 40862)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2011-10-09 00:45:26 UTC (rev 40863)
@@ -1368,7 +1368,7 @@
 	return changed;
 }
 
-static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction, int select, int jump)
+static void ui_textedit_move(uiBut *but, uiHandleButtonData *data, int direction, int select, int jump, int jump_all)
 {
 	const char *str= data->str;
 	const int len= strlen(str);
@@ -1377,11 +1377,16 @@
 
 	/* special case, quit selection and set cursor */
 	if (has_sel && !select) {
-		if (direction) {
-			but->selsta = but->pos = but->selend;
+		if (jump_all) {
+			but->selsta = but->selend= but->pos = direction ? len : 0;
 		}
 		else {
-			but->pos = but->selend = but->selsta;
+			if (direction) {
+				but->selsta = but->pos = but->selend;
+			}
+			else {
+				but->pos = but->selend = but->selsta;
+			}
 		}
 		data->selextend = 0;
 	}
@@ -1393,7 +1398,7 @@
 				 * list of special character, ctr -> */
 				while(but->pos < len) {
 					but->pos++;
-					if(test_special_char(str[but->pos])) break;
+					if(!jump_all && test_special_char(str[but->pos])) break;
 				}
 			}
 			else {
@@ -1408,7 +1413,7 @@
 				 * list of special character, ctr -> */
 				while(but->pos > 0){
 					but->pos--;
-					if(test_special_char(str[but->pos])) break;
+					if(!jump_all && test_special_char(str[but->pos])) break;
 				}
 			}
 			else {
@@ -1464,30 +1469,6 @@
 	}
 }
 
-static void ui_textedit_move_end(uiBut *but, uiHandleButtonData *data, int direction, int select)
-{
-	const char *str= data->str;
-
-	if(direction) { /* right */
-		if(select) {
-			but->selsta = but->pos;
-			but->selend = strlen(str);
-			data->selextend = EXTEND_RIGHT;
-		} else {
-			but->selsta = but->selend = but->pos= strlen(str);
-		}
-	}
-	else { /* left */
-		if(select) {
-			but->selend = but->pos;
-			but->selsta = 0;
-			data->selextend = EXTEND_LEFT;
-		} else {
-			but->selsta = but->selend = but->pos= 0;
-		}
-	}
-}
-
 static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int direction, int all)
 {
 	char *str;
@@ -1820,11 +1801,11 @@
 				}
 				break;
 			case RIGHTARROWKEY:
-				ui_textedit_move(but, data, 1, event->shift, event->ctrl);
+				ui_textedit_move(but, data, 1, event->shift, event->ctrl, FALSE);
 				retval= WM_UI_HANDLER_BREAK;
 				break;
 			case LEFTARROWKEY:
-				ui_textedit_move(but, data, 0, event->shift, event->ctrl);
+				ui_textedit_move(but, data, 0, event->shift, event->ctrl, FALSE);
 				retval= WM_UI_HANDLER_BREAK;
 				break;
 			case DOWNARROWKEY:
@@ -1834,7 +1815,7 @@
 				}
 				/* pass on purposedly */
 			case ENDKEY:
-				ui_textedit_move_end(but, data, 1, event->shift);
+				ui_textedit_move(but, data, 1, event->shift, TRUE, TRUE);
 				retval= WM_UI_HANDLER_BREAK;
 				break;
 			case UPARROWKEY:
@@ -1844,7 +1825,7 @@
 				}
 				/* pass on purposedly */
 			case HOMEKEY:
-				ui_textedit_move_end(but, data, 0, event->shift);
+				ui_textedit_move(but, data, 0, event->shift, TRUE, TRUE);
 				retval= WM_UI_HANDLER_BREAK;
 				break;
 			case PADENTER:




More information about the Bf-blender-cvs mailing list