[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [40890] trunk/blender/source/blender/ editors/interface/interface_handlers.c: bug #28848 also mentions Ctrl+Backspace isnt working.

Campbell Barton ideasman42 at gmail.com
Mon Oct 10 03:11:44 CEST 2011


Revision: 40890
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40890
Author:   campbellbarton
Date:     2011-10-10 01:11:40 +0000 (Mon, 10 Oct 2011)
Log Message:
-----------
bug #28848 also mentions Ctrl+Backspace isnt working.
added support for ctrl+backspace/delete.

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-10 00:38:32 UTC (rev 40889)
+++ trunk/blender/source/blender/editors/interface/interface_handlers.c	2011-10-10 01:11:40 UTC (rev 40890)
@@ -1481,13 +1481,12 @@
 	}
 }
 
-static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int direction, int all)
+static int ui_textedit_delete(uiBut *but, uiHandleButtonData *data, int direction, const int all, const int jump)
 {
-	char *str;
-	int len, x, changed= 0;
+	char *str= data->str;
+	const int len= strlen(str);
 
-	str= data->str;
-	len= strlen(str);
+	int x, changed= 0;
 
 	if(all) {
 		if(len) changed=1;
@@ -1499,9 +1498,24 @@
 			changed= ui_textedit_delete_selection(but, data);
 		}
 		else if(but->pos>=0 && but->pos<len) {
+			int step;
+
+			if (jump) {
+				x = but->pos;
+				step= 0;
+				while(x < len) {
+					x++;
+					step++;
+					if(test_special_char(str[x])) break;
+				}
+			}
+			else {
+				step= 1;
+			}
+
 			for(x=but->pos; x<len; x++)
-				str[x]= str[x+1];
-			str[len-1]='\0';
+				str[x]= str[x+step];
+			str[len-step]='\0';
 			changed= 1;
 		}
 	}
@@ -1511,11 +1525,26 @@
 				changed= ui_textedit_delete_selection(but, data);
 			}
 			else if(but->pos>0) {
+				int step;
+
+				if (jump) {
+					x = but->pos;
+					step= 0;
+					while(x > 0) {
+						x--;
+						step++;
+						if((step > 1) && test_special_char(str[x])) break;
+					}
+				}
+				else {
+					step= 1;
+				}
+
 				for(x=but->pos; x<len; x++)
-					str[x-1]= str[x];
-				str[len-1]='\0';
+					str[x-step]= str[x];
+				str[len-step]='\0';
 
-				but->pos--;
+				but->pos -= step;
 				changed= 1;
 			}
 		} 
@@ -1846,12 +1875,12 @@
 				retval= WM_UI_HANDLER_BREAK;
 				break;
 			case DELKEY:
-				changed= ui_textedit_delete(but, data, 1, 0);
+				changed= ui_textedit_delete(but, data, 1, 0, event->ctrl);
 				retval= WM_UI_HANDLER_BREAK;
 				break;
 
 			case BACKSPACEKEY:
-				changed= ui_textedit_delete(but, data, 0, event->shift);
+				changed= ui_textedit_delete(but, data, 0, event->shift, event->ctrl);
 				retval= WM_UI_HANDLER_BREAK;
 				break;
 				




More information about the Bf-blender-cvs mailing list