diff options
author | Martin Poirier <theeth@yahoo.com> | 2004-02-15 05:03:33 +0300 |
---|---|---|
committer | Martin Poirier <theeth@yahoo.com> | 2004-02-15 05:03:33 +0300 |
commit | 0ad8b66046e85dca41672f4a6403c48d64f3d5ac (patch) | |
tree | 7950ea2fce11624473a75062227542648af28b3d /source | |
parent | 6101f0d03d7da9411a12ef52b585349faeed6b67 (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.
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/src/drawtext.c | 303 |
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; |