diff options
-rwxr-xr-x | amiga/context_menu.c | 7 | ||||
-rwxr-xr-x | amiga/gui.c | 85 | ||||
-rwxr-xr-x | amiga/menu.c | 14 |
3 files changed, 86 insertions, 20 deletions
diff --git a/amiga/context_menu.c b/amiga/context_menu.c index 44a8819a7..f97b6aa60 100755 --- a/amiga/context_menu.c +++ b/amiga/context_menu.c @@ -31,6 +31,7 @@ #include <string.h> #include "utils/utils.h" #include <proto/asl.h> +#include "desktop/textinput.h" uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved); @@ -277,12 +278,12 @@ uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved) break; case CMID_SELCOPY: - gui_copy_to_clipboard(gwin->bw->sel); - browser_window_key_press(gwin->bw, 26); + browser_window_key_press(gwin->bw, KEY_COPY_SELECTION); + browser_window_key_press(gwin->bw, KEY_CLEAR_SELECTION); break; case CMID_SELALL: - browser_window_key_press(gwin->bw, 1); + browser_window_key_press(gwin->bw, KEY_SELECT_ALL); break; } } diff --git a/amiga/gui.c b/amiga/gui.c index 39614eadc..0abedd45f 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -929,19 +929,84 @@ void ami_handle_msg(void) switch(storage) { case RAWKEY_CRSRUP: - browser_window_key_press(gwin->bw,KEY_UP); + if(ie->ie_Qualifier & IEQUALIFIER_RSHIFT) + { + browser_window_key_press(gwin->bw,KEY_PAGE_UP); + } + else if(ie->ie_Qualifier & IEQUALIFIER_RALT) + { + browser_window_key_press(gwin->bw,KEY_TEXT_START); + } + else browser_window_key_press(gwin->bw,KEY_UP); break; case RAWKEY_CRSRDOWN: - browser_window_key_press(gwin->bw,KEY_DOWN); + if(ie->ie_Qualifier & IEQUALIFIER_RSHIFT) + { + browser_window_key_press(gwin->bw,KEY_PAGE_DOWN); + } + else if(ie->ie_Qualifier & IEQUALIFIER_RALT) + { + browser_window_key_press(gwin->bw,KEY_TEXT_END); + } + else browser_window_key_press(gwin->bw,KEY_DOWN); break; case RAWKEY_CRSRLEFT: - browser_window_key_press(gwin->bw,KEY_LEFT); + if(ie->ie_Qualifier & IEQUALIFIER_RSHIFT) + { + browser_window_key_press(gwin->bw,KEY_LINE_START); + } + else if(ie->ie_Qualifier & IEQUALIFIER_RALT) + { + browser_window_key_press(gwin->bw,KEY_WORD_LEFT); + } + else browser_window_key_press(gwin->bw,KEY_LEFT); break; case RAWKEY_CRSRRIGHT: - browser_window_key_press(gwin->bw,KEY_RIGHT); + if(ie->ie_Qualifier & IEQUALIFIER_RSHIFT) + { + browser_window_key_press(gwin->bw,KEY_LINE_END); + } + else if(ie->ie_Qualifier & IEQUALIFIER_RALT) + { + browser_window_key_press(gwin->bw,KEY_WORD_RIGHT); + } + else browser_window_key_press(gwin->bw,KEY_RIGHT); break; case RAWKEY_ESC: - browser_window_key_press(gwin->bw,27); + browser_window_key_press(gwin->bw,KEY_ESCAPE); + break; + case RAWKEY_PAGEUP: + browser_window_key_press(gwin->bw,KEY_PAGE_UP); + break; + case RAWKEY_PAGEDOWN: + browser_window_key_press(gwin->bw,KEY_PAGE_DOWN); + break; + case RAWKEY_HOME: + browser_window_key_press(gwin->bw,KEY_TEXT_START); + break; + case RAWKEY_END: + browser_window_key_press(gwin->bw,KEY_TEXT_END); + break; + case RAWKEY_BACKSPACE: + if(ie->ie_Qualifier & IEQUALIFIER_RSHIFT) + { + browser_window_key_press(gwin->bw,KEY_DELETE_LINE_START); + } + else browser_window_key_press(gwin->bw,KEY_DELETE_LEFT); + break; + case RAWKEY_DEL: + if(ie->ie_Qualifier & IEQUALIFIER_RSHIFT) + { + browser_window_key_press(gwin->bw,KEY_DELETE_LINE_END); + } + else browser_window_key_press(gwin->bw,KEY_DELETE_RIGHT); + break; + case RAWKEY_TAB: + if(ie->ie_Qualifier & IEQUALIFIER_RSHIFT) + { + browser_window_key_press(gwin->bw,KEY_SHIFT_TAB); + } + else browser_window_key_press(gwin->bw,KEY_TAB); break; default: if((chars = MapRawKey(ie,buffer,20,NULL)) > 0) @@ -951,18 +1016,16 @@ void ami_handle_msg(void) /* We are duplicating the menu shortcuts here, as if RMBTRAP is active * (ie. when context menus are enabled and the mouse is over the browser * rendering area), Intuition also does not catch the menu shortcut - * key presses. This should probably be expanded to contain all the - * menu shortcuts, but copy and paste are the most used so we only - * handle those for now. */ + * key presses. Context menus need to be changed to use MENUVERIFY not RMBTRAP */ switch(buffer[0]) { case 'c': - gui_copy_to_clipboard(gwin->bw->sel); - browser_window_key_press(gwin->bw, 26); + browser_window_key_press(gwin->bw, KEY_COPY_SELECTION); + browser_window_key_press(gwin->bw, KEY_ESCAPE); break; case 'v': - gui_paste_from_clipboard(gwin->bw->window,0,0); + browser_window_key_press(gwin->bw, KEY_PASTE); break; } } diff --git a/amiga/menu.c b/amiga/menu.c index c7bd09371..b20b4a2f1 100755 --- a/amiga/menu.c +++ b/amiga/menu.c @@ -39,7 +39,8 @@ #include "amiga/save_complete.h" #include "utils/url.h" #include <dos/anchorpath.h> - +#include "desktop/textinput.h" +#include "amiga/search.h" BOOL menualreadyinit; const char * const netsurf_version; @@ -547,20 +548,21 @@ void ami_menupick(ULONG code,struct gui_window_2 *gwin,struct MenuItem *item) switch(itemnum) { case 0: // copy - gui_copy_to_clipboard(gwin->bw->sel); - browser_window_key_press(gwin->bw, 26); + browser_window_key_press(gwin->bw, KEY_COPY_SELECTION); + browser_window_key_press(gwin->bw, KEY_ESCAPE); break; case 1: // paste - gui_paste_from_clipboard(&tgw,0,0); + browser_window_key_press(gwin->bw, KEY_PASTE); + //gui_paste_from_clipboard(&tgw,0,0); break; case 2: // select all - browser_window_key_press(gwin->bw, 1); + browser_window_key_press(gwin->bw, KEY_SELECT_ALL); break; case 3: // clear selection - browser_window_key_press(gwin->bw, 26); + browser_window_key_press(gwin->bw, KEY_CLEAR_SELECTION); break; } break; |