Page MenuHome

ctrlbs13.txt

ctrlbs13.txt

Index: source/blender/include/interface.h
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/include/interface.h,v
retrieving revision 1.28
diff -u -p -u -r1.28 interface.h
--- source/blender/include/interface.h 28 Jan 2006 18:33:13 -0000 1.28
+++ source/blender/include/interface.h 19 Dec 2006 13:56:02 -0000
@@ -234,4 +234,3 @@ extern void ui_draw_anti_x(float x1, flo
#endif
-
Index: source/blender/src/interface.c
===================================================================
RCS file: /cvsroot/bf-blender/blender/source/blender/src/interface.c,v
retrieving revision 1.250
diff -u -p -u -r1.250 interface.c
--- source/blender/src/interface.c 7 Dec 2006 14:17:37 -0000 1.250
+++ source/blender/src/interface.c 19 Dec 2006 13:56:10 -0000
@@ -1653,6 +1653,67 @@ static short test_special_char(char ch)
return 0;
}
+static short erasetext(uiBut *but, short len, char *str, short negsteps, short possteps) {
+ if(but->pos != len) {
+ int x;
+
+ for(x=but->pos; x<=strlen(str); x++)
+ str[x-negsteps]= str[x+possteps];
+ }
+
+ but->pos-=negsteps;
+ len-=negsteps+possteps;
+ str[len]='\0';
+
+ return len;
+}
+
+static short eraseall(uiBut *but, short len, char *str) {
+ str[0]= 0;
+ but->pos= 0;
+ len= 0;
+
+ return len;
+}
+
+static short movecursortillspecialchar(short butpos, char *str, short dir) {
+ /* jump between special characters (/,\,_,-, etc.),
+ * look at function test_special_char() for complete
+ * list of special character, ctr -> */
+
+ /* right*/
+ if(dir == 1) {
+ while(butpos < strlen(str)) {
+ butpos++;
+ if(test_special_char(str[butpos])) break;
+ }
+ } /* left*/
+ else {
+ while(butpos > 0) {
+ butpos--;
+ if(test_special_char(str[butpos])) break;
+ }
+ }
+
+ return butpos;
+}
+
+static short movecursor(short butpos, char *str, short dir, short steps) {
+ /* right*/
+ if(dir == 1) {
+ if(butpos < strlen(str)) {
+ butpos+=steps;
+ }
+ } /* left*/
+ else {
+ if(butpos > 0) {
+ butpos-=steps;
+ }
+ }
+
+ return butpos;
+}
+
static int ui_do_but_TEX(uiBut *but)
{
unsigned short dev;
@@ -1831,21 +1892,13 @@ static int ui_do_but_TEX(uiBut *but)
/* make a selection, starting from the cursor position */
but->selsta = but->pos;
- but->pos++;
- if(but->pos>strlen(str)) but->pos= strlen(str);
+ but->pos= movecursor(but->pos, str, 1, 1);
but->selend = but->pos;
} else if(G.qual & LR_CTRLKEY) {
- /* jump betweenn special characters (/,\,_,-, etc.),
- * look at function test_special_char() for complete
- * list of special character, ctr -> */
- while(but->pos < len) {
- but->pos++;
- if(test_special_char(str[but->pos])) break;
- }
+ but->pos= movecursortillspecialchar(but->pos, str, 1);
} else {
- but->pos++;
- if(but->pos>strlen(str)) but->pos= strlen(str);
+ but->pos= movecursor(but->pos, str, 1, 1);
}
}
dodraw= 1;
@@ -1870,7 +1923,7 @@ static int ui_do_but_TEX(uiBut *but)
but->pos = but->selsta;
selextend = EXTEND_LEFT;
}
- }
+ }
} else {
but->pos = but->selend = but->selsta;
selextend = 0;
@@ -1880,20 +1933,13 @@ static int ui_do_but_TEX(uiBut *but)
/* make a selection, starting from the cursor position */
but->selend = but->pos;
- but->pos--;
- if(but->pos<0) but->pos= 0;
+ but->pos= movecursor(but->pos, str, -1, 1);
but->selsta = but->pos;
} else if(G.qual & LR_CTRLKEY) {
- /* jump betweenn special characters (/,\,_,-, etc.),
- * look at function test_special_char() for complete
- * list of special character, ctr -> */
- while(but->pos > 0){
- but->pos--;
- if(test_special_char(str[but->pos])) break;
- }
+ but->pos= movecursortillspecialchar(but->pos, str, -1);
} else {
- if(but->pos>0) but->pos--;
+ but->pos= movecursor(but->pos, str, -1, 1);
}
}
dodraw= 1;
@@ -1936,34 +1982,39 @@ static int ui_do_but_TEX(uiBut *but)
dodraw=1;
}
else if(but->pos>=0 && but->pos<strlen(str)) {
- for(x=but->pos; x<=strlen(str); x++)
- str[x]= str[x+1];
- str[--len]='\0';
+ len= erasetext(but, len, str, 0, 1);
dodraw= 1;
}
break;
- case BACKSPACEKEY:
+ case BACKSPACEKEY:
if(len!=0) {
if (SELWIDTH > 0) {
len -= ui_delete_selection_edittext(but);
if (len < 0) len = 0;
- dodraw=1;
+ }
+ else if(get_qual() & LR_CTRLKEY) {
+ short foundword= 0, eraseamount= 0;
+
+ for(x=but->pos-1; x>=0; x--) {
+ if(str[x] != ' ' && foundword == 0)
+ foundword= 1;
+ if(str[x] == ' ' && foundword == 1)
+ break;
+
+ eraseamount++;
+ }
+
+ len= erasetext(but, len, str, eraseamount, 0);
}
else if(get_qual() & LR_SHIFTKEY) {
- str[0]= 0;
- but->pos= 0;
- len= 0;
- dodraw= 1;
- }
- else if(but->pos>0) {
- for(x=but->pos; x<=strlen(str); x++)
- str[x-1]= str[x];
- but->pos--;
- str[--len]='\0';
- dodraw= 1;
+ len= eraseall(but, len, str);
+ }
+ else if(but->pos>0) {
+ len= erasetext(but, len, str, 1, 0);
}
+ dodraw= 1;
}
break;
@@ -6597,4 +6648,3 @@ short pupmenu_col(char *instr, int maxro
return val;
}
-

File Metadata

Mime Type
text/x-diff
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
08/4d/70df809fe81b2c5ffc878b344699

Event Timeline