Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2003-12-29 00:28:35 +0300
committerMartin Poirier <theeth@yahoo.com>2003-12-29 00:28:35 +0300
commit65aeef11e161e99f8972f305d3f1535e81a76271 (patch)
tree27c294a5ee5e154f95c0e94f1f55074e4db8c547 /source
parent9aed5cb7f02df7b1b0fe9331660c3935fdf4bbca (diff)
Alex Mole's patch for END and HOME
http://www.blender.org/pipermail/bf-committers/2003-December/004691.html Makes HOME and END keys work in text space and text edit boxes. I've tested it for some time now and I haven't had any problem or spotted any irregularities of some sort. One think though. It doesn't update the panning of the text window if the cursor gets out of the screen. I guess someone (more familiar with the code) could look into this. Really nifty when coding scripts.
Diffstat (limited to 'source')
-rw-r--r--source/blender/src/drawtext.c10
-rw-r--r--source/blender/src/interface.c52
2 files changed, 46 insertions, 16 deletions
diff --git a/source/blender/src/drawtext.c b/source/blender/src/drawtext.c
index 20a0b62eefb..543247a5fad 100644
--- a/source/blender/src/drawtext.c
+++ b/source/blender/src/drawtext.c
@@ -1421,6 +1421,16 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
do_draw= 1;
break;
+ case HOMEKEY:
+ txt_move_bol(text, G.qual & LR_SHIFTKEY);
+ do_draw= 1;
+ break;
+
+ case ENDKEY:
+ txt_move_eol(text, G.qual & LR_SHIFTKEY);
+ do_draw= 1;
+ break;
+
case WHEELUPMOUSE:
screen_skip(st, -U.wheellinescroll);
do_draw= 1;
diff --git a/source/blender/src/interface.c b/source/blender/src/interface.c
index c84d6a7da23..c7a61873a4e 100644
--- a/source/blender/src/interface.c
+++ b/source/blender/src/interface.c
@@ -1135,6 +1135,7 @@ static int ui_do_but_TEX(uiBut *but)
unsigned short dev;
short x, mval[2], len=0, dodraw;
char *str, backstr[UI_MAX_DRAW_STR];
+ short capturing;
str= (char *)but->poin;
@@ -1166,7 +1167,8 @@ static int ui_do_but_TEX(uiBut *but)
len= strlen(str);
but->min= 0.0;
- while(TRUE) {
+ capturing = TRUE;
+ while(capturing) {
char ascii;
short val;
@@ -1195,29 +1197,45 @@ static int ui_do_but_TEX(uiBut *but)
}
else if(val) {
- if(dev==RIGHTARROWKEY) {
+ switch (dev) {
+
+ case RIGHTARROWKEY:
if(G.qual & LR_SHIFTKEY) but->pos= strlen(str);
else but->pos++;
if(but->pos>strlen(str)) but->pos= strlen(str);
dodraw= 1;
- }
- else if(dev==LEFTARROWKEY) {
+ break;
+
+ case LEFTARROWKEY:
if(G.qual & LR_SHIFTKEY) but->pos= 0;
else if(but->pos>0) but->pos--;
dodraw= 1;
- }
- else if(dev==PADENTER || dev==RETKEY) {
break;
- }
- else if(dev==DELKEY) {
- if(but->pos>=0 && but->pos<strlen(str)) {
- for(x=but->pos; x<=strlen(str); x++)
- str[x]= str[x+1];
- str[--len]='\0';
- dodraw= 1;
- }
- }
- else if(dev==BACKSPACEKEY) {
+
+ case ENDKEY:
+ but->pos= strlen(str);
+ dodraw= 1;
+ break;
+
+ case HOMEKEY:
+ but->pos= 0;
+ dodraw= 1;
+ break;
+
+ case PADENTER:
+ case RETKEY:
+ capturing = FALSE;
+ break;
+
+ case DELKEY:
+ if(but->pos>=0 && but->pos<strlen(str)) {
+ for(x=but->pos; x<=strlen(str); x++)
+ str[x]= str[x+1];
+ str[--len]='\0';
+ dodraw= 1;
+ }
+
+ case BACKSPACEKEY:
if(len!=0) {
if(get_qual() & LR_SHIFTKEY) {
str[0]= 0;
@@ -1233,8 +1251,10 @@ static int ui_do_but_TEX(uiBut *but)
dodraw= 1;
}
}
+ break;
}
}
+
if(dodraw) {
ui_check_but(but);
ui_draw_but(but);