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
diff options
context:
space:
mode:
authorMartin Poirier <theeth@yahoo.com>2004-02-15 05:03:33 +0300
committerMartin Poirier <theeth@yahoo.com>2004-02-15 05:03:33 +0300
commit0ad8b66046e85dca41672f4a6403c48d64f3d5ac (patch)
tree7950ea2fce11624473a75062227542648af28b3d
parent6101f0d03d7da9411a12ef52b585349faeed6b67 (diff)
Text Window keyboard event cleaning.
There was two switch where only one was needed (which caused an event to register in two different actions under some conditions). I merged both of them, which not only made the code a lot clearer but also safer. Fixed the Home and End case which didn't update the display correctly. I've tested it for some time, so I'm pretty sure nothing is broken.
-rw-r--r--source/blender/src/drawtext.c303
1 files changed, 123 insertions, 180 deletions
diff --git a/source/blender/src/drawtext.c b/source/blender/src/drawtext.c
index d070bf467a2..a44ab9b2ccb 100644
--- a/source/blender/src/drawtext.c
+++ b/source/blender/src/drawtext.c
@@ -1000,7 +1000,7 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
}
if (val && !ELEM(G.qual, 0, LR_SHIFTKEY)) {
- if (event==FKEY && (G.qual & LR_ALTKEY) && (G.qual & LR_SHIFTKEY)) {
+ if (event==FKEY && G.qual == (LR_ALTKEY|LR_SHIFTKEY)) {
switch (pupmenu("File %t|New %x0|Open... %x1")) {
case 0:
st->text= add_empty_text();
@@ -1088,54 +1088,36 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
}
} else if (val) {
switch (event) {
- case FKEY:
- if (G.qual == (LR_ALTKEY|LR_SHIFTKEY)) {
- p= pupmenu("File %t|New %x0|Open... %x1|Save %x2|Save As...%x3");
-
- switch(p) {
- case 0:
- st->text= add_empty_text();
- st->top= 0;
-
- allqueue(REDRAWTEXT, 0);
- allqueue(REDRAWHEADERS, 0);
- break;
-
- case 1:
- activate_fileselect(FILE_SPECIAL, "LOAD TEXT FILE", G.sce, add_text_fs);
- break;
-
- case 3:
- text->flags |= TXT_ISMEM;
-
- case 2:
- txt_write_file(text);
- do_draw= 1;
- break;
-
- default:
- break;
- }
- } else if (G.qual & LR_ALTKEY) {
- if (txt_has_sel(text) && !(G.qual & LR_CTRLKEY)) {
- txt_find_panel(st,0);
- } else if (!last_txt_find_string || (G.qual & LR_CTRLKEY)) {
- txt_find_panel(st,1);
- }
-
+ case AKEY:
+ if (G.qual & LR_ALTKEY) {
+ txt_move_bol(text, G.qual & LR_SHIFTKEY);
+ do_draw= 1;
+ pop_space_text(st);
+ } else if (G.qual & LR_CTRLKEY) {
+ txt_sel_all(text);
do_draw= 1;
}
-
- break;
+ break; /* BREAK A */
+ case CKEY:
+ if (G.qual & LR_ALTKEY || G.qual & LR_CTRLKEY) {
+ if(G.qual & LR_SHIFTKEY)
+ txt_copy_clipboard(text);
+ else
+ txt_copy_sel(text);
+ do_draw= 1;
+ }
+ break; /* BREAK C */
+ case DKEY:
+ if (G.qual == LR_CTRLKEY) {
+ txt_delete_char(text);
+ do_draw= 1;
+ pop_space_text(st);
+ }
+ break; /* BREAK D */
case EKEY:
if (G.qual == (LR_ALTKEY|LR_SHIFTKEY)) {
- p= pupmenu("Edit %t|"
- "Cut %x0|"
- "Copy %x1|"
- "Paste %x2|"
- "Print Cut Buffer %x3");
- switch(p) {
+ switch(pupmenu("Edit %t|Cut %x0|Copy %x1|Paste %x2|Print Cut Buffer %x3")) {
case 0:
txt_cut_sel(text);
do_draw= 1;
@@ -1153,128 +1135,57 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
break;
}
}
- break;
-
- case VKEY:
- if (G.qual == (LR_ALTKEY| LR_SHIFTKEY)) {
- p= pupmenu("View %t|"
- "Top of File %x0|"
- "Bottom of File %x1|"
- "Page Up %x2|"
- "Page Down %x3");
- switch(p) {
+ else if (G.qual == LR_CTRLKEY || G.qual == (LR_CTRLKEY|LR_SHIFTKEY)) {
+ txt_move_eol(text, G.qual & LR_SHIFTKEY);
+ do_draw= 1;
+ pop_space_text(st);
+ }
+ break; /* BREAK E */
+ case FKEY:
+ if (G.qual == (LR_ALTKEY|LR_SHIFTKEY)) {
+ switch(pupmenu("File %t|New %x0|Open... %x1|Save %x2|Save As...%x3")) {
case 0:
- txt_move_bof(text, 0);
- do_draw= 1;
- pop_space_text(st);
- break;
+ st->text= add_empty_text();
+ st->top= 0;
- case 1:
- txt_move_eof(text, 0);
- do_draw= 1;
- pop_space_text(st);
+ allqueue(REDRAWTEXT, 0);
+ allqueue(REDRAWHEADERS, 0);
break;
-
- case 2:
- screen_skip(st, -st->viewlines);
- do_draw= 1;
+ case 1:
+ activate_fileselect(FILE_SPECIAL, "LOAD TEXT FILE", G.sce, add_text_fs);
break;
-
case 3:
- screen_skip(st, st->viewlines);
+ text->flags |= TXT_ISMEM;
+ case 2:
+ txt_write_file(text);
do_draw= 1;
break;
}
}
- break;
-
- case SKEY:
- if (G.qual == (LR_ALTKEY|LR_SHIFTKEY)) {
- p= pupmenu("Select %t|"
- "Select All %x0|"
- "Select Line %x1|"
- "Jump to Line %x3");
- switch(p) {
- case 0:
- txt_sel_all(text);
- do_draw= 1;
- break;
-
- case 1:
- txt_sel_line(text);
+ else if (G.qual == LR_ALTKEY) {
+ if (txt_has_sel(text)) {
+ txt_find_panel(st,0);
do_draw= 1;
- break;
-
- case 3:
- do_draw= jumptoline_interactive(st);
- break;
}
}
- break;
-
- case QKEY:
- if(okee("QUIT BLENDER")) exit_usiblender();
- break;
- }
-
- switch(event) {
- case AKEY:
- if (G.qual & LR_ALTKEY) {
- txt_move_bol(text, G.qual & LR_SHIFTKEY);
- do_draw= 1;
- pop_space_text(st);
- } else if (G.qual & LR_CTRLKEY) {
- txt_sel_all(text);
- do_draw= 1;
- }
- break;
-
- case CKEY:
- if (G.qual & LR_ALTKEY || G.qual & LR_CTRLKEY) {
- if(G.qual & LR_SHIFTKEY)
- txt_copy_clipboard(text);
- else
- txt_copy_sel(text);
-
- do_draw= 1;
- }
- break;
-
- case DKEY:
- if (G.qual == LR_CTRLKEY) {
- txt_delete_char(text);
- do_draw= 1;
- pop_space_text(st);
- }
- break;
-
- case EKEY:
- if (G.qual == LR_CTRLKEY) {
- txt_move_eol(text, G.qual & LR_SHIFTKEY);
- do_draw= 1;
- pop_space_text(st);
+ else if (G.qual == (LR_ALTKEY|LR_CTRLKEY)) {
+ if (!last_txt_find_string) {
+ txt_find_panel(st,1);
+ do_draw= 1;
+ }
}
- break;
-
+ break; /* BREAK F */
case JKEY:
if (G.qual == LR_ALTKEY) {
do_draw= jumptoline_interactive(st);
}
- break;
-
- case OKEY:
- if (G.qual == LR_ALTKEY) {
- activate_fileselect(FILE_SPECIAL, "LOAD TEXT FILE", G.sce, add_text_fs);
- }
- break;
-
+ break; /* BREAK J */
case MKEY:
if (G.qual == LR_ALTKEY) {
txt_export_to_object(text);
do_draw= 1;
}
- break;
-
+ break; /* BREAK M */
case NKEY:
if (G.qual == LR_ALTKEY) {
st->text= add_empty_text();
@@ -1284,38 +1195,63 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
allqueue(REDRAWHEADERS, 0);
}
- break;
-
+ break; /* BREAK N */
+ case OKEY:
+ if (G.qual == LR_ALTKEY) {
+ activate_fileselect(FILE_SPECIAL, "LOAD TEXT FILE", G.sce, add_text_fs);
+ }
+ break; /* BREAK O */
case PKEY:
if (G.qual == LR_ALTKEY) {
run_python_script(st);
do_draw= 1;
}
- break;
-
+ break; /* BREAK P */
+ case QKEY:
+ if(okee("QUIT BLENDER")) exit_usiblender();
+ break; /* BREAK Q */
case RKEY:
if (G.qual == LR_ALTKEY) {
if (text->compiled) BPY_free_compiled_text(text);
text->compiled = NULL;
if (okee("Reopen Text")) {
- if (!reopen_text(text)) {
+ if (!reopen_text(text))
error("Could not reopen file");
- }
}
do_draw= 1;
}
- break;
-
+ break; /* BREAK R */
case SKEY:
- if (G.qual & LR_ALTKEY) {
+ if (G.qual == (LR_ALTKEY|LR_SHIFTKEY)) {
+ p= pupmenu("Select %t|"
+ "Select All %x0|"
+ "Select Line %x1|"
+ "Jump to Line %x3");
+ switch(p) {
+ case 0:
+ txt_sel_all(text);
+ do_draw= 1;
+ break;
+
+ case 1:
+ txt_sel_line(text);
+ do_draw= 1;
+ break;
+
+ case 3:
+ do_draw= jumptoline_interactive(st);
+ break;
+ }
+ }
+ else if (G.qual & LR_ALTKEY) {
+ /* Event treatment CANNOT enter this if
if (G.qual & LR_SHIFTKEY)
if (text) text->flags |= TXT_ISMEM;
-
+ */
txt_write_file(text);
do_draw= 1;
}
- break;
-
+ break; /* BREAK S */
case UKEY:
//txt_print_undo(text); //debug buffer in console
if (G.qual == (LR_ALTKEY|LR_SHIFTKEY)) {
@@ -1326,20 +1262,41 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
txt_do_undo(text);
do_draw= 1;
}
- break;
-
+ break; /* BREAK U */
case VKEY:
- if (G.qual & LR_ALTKEY || G.qual & LR_CTRLKEY) {
- if(G.qual & LR_SHIFTKEY)
+ if (G.qual == (LR_ALTKEY| LR_SHIFTKEY)) {
+ switch(pupmenu("View %t|Top of File %x0|Bottom of File %x1|Page Up %x2|Page Down %x3")) {
+ case 0:
+ txt_move_bof(text, 0);
+ do_draw= 1;
+ pop_space_text(st);
+ break;
+ case 1:
+ txt_move_eof(text, 0);
+ do_draw= 1;
+ pop_space_text(st);
+ break;
+ case 2:
+ screen_skip(st, -st->viewlines);
+ do_draw= 1;
+ break;
+ case 3:
+ screen_skip(st, st->viewlines);
+ do_draw= 1;
+ break;
+ }
+ }
+ /* Support for both Alt-V and Ctrl-V for Paste, for backward compatibility reasons */
+ else if (G.qual & LR_ALTKEY || G.qual & LR_CTRLKEY) {
+ /* Throwing in the Shift modifier Paste from the OS clipboard */
+ if (G.qual & LR_SHIFTKEY)
txt_paste_clipboard(text);
else
txt_paste(text);
-
do_draw= 1;
pop_space_text(st);
}
- break;
-
+ break; /* BREAK V */
case XKEY:
if (G.qual == LR_ALTKEY || G.qual == LR_CTRLKEY) {
txt_cut_sel(text);
@@ -1347,92 +1304,78 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt)
pop_space_text(st);
}
break;
-
case ZKEY:
if (G.qual & LR_ALTKEY || G.qual & LR_CTRLKEY) {
if (G.qual & LR_SHIFTKEY) {
txt_do_redo(text);
- do_draw= 1;
} else {
txt_do_undo(text);
- do_draw= 1;
}
+ do_draw= 1;
}
break;
-
case TABKEY:
txt_add_char(text, '\t');
pop_space_text(st);
do_draw= 1;
break;
-
case RETKEY:
txt_split_curline(text);
do_draw= 1;
pop_space_text(st);
break;
-
case BACKSPACEKEY:
txt_backspace_char(text);
do_draw= 1;
pop_space_text(st);
break;
-
case DELKEY:
txt_delete_char(text);
do_draw= 1;
pop_space_text(st);
break;
-
case DOWNARROWKEY:
txt_move_down(text, G.qual & LR_SHIFTKEY);
do_draw= 1;
pop_space_text(st);
break;
-
case LEFTARROWKEY:
txt_move_left(text, G.qual & LR_SHIFTKEY);
do_draw= 1;
pop_space_text(st);
break;
-
case RIGHTARROWKEY:
txt_move_right(text, G.qual & LR_SHIFTKEY);
do_draw= 1;
pop_space_text(st);
break;
-
case UPARROWKEY:
txt_move_up(text, G.qual & LR_SHIFTKEY);
do_draw= 1;
pop_space_text(st);
break;
-
case PAGEDOWNKEY:
screen_skip(st, st->viewlines);
do_draw= 1;
break;
-
case PAGEUPKEY:
screen_skip(st, -st->viewlines);
do_draw= 1;
break;
-
case HOMEKEY:
txt_move_bol(text, G.qual & LR_SHIFTKEY);
do_draw= 1;
+ pop_space_text(st);
break;
-
case ENDKEY:
txt_move_eol(text, G.qual & LR_SHIFTKEY);
do_draw= 1;
+ pop_space_text(st);
break;
-
case WHEELUPMOUSE:
screen_skip(st, -U.wheellinescroll);
do_draw= 1;
break;
-
case WHEELDOWNMOUSE:
screen_skip(st, U.wheellinescroll);
do_draw= 1;