From a809db0c73ee045159a1e600ac00a69bcb8491d2 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sat, 8 Oct 2011 13:48:44 +0000 Subject: Navigate submenu svn path=/trunk/netsurf/; revision=13010 --- amiga/context_menu.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 91 insertions(+), 7 deletions(-) diff --git a/amiga/context_menu.c b/amiga/context_menu.c index 595049183..d7043fd5f 100755 --- a/amiga/context_menu.c +++ b/amiga/context_menu.c @@ -80,11 +80,18 @@ enum { CMID_FRAMECOPYURL, CMID_FRAMESAVE, CMID_PLUGINCMD, + CMID_NAVHOME, + CMID_NAVBACK, + CMID_NAVFORWARD, + CMID_NAVRELOAD, + CMID_NAVSTOP, + CMSUB_OBJECT, CMSUB_URL, CMSUB_SEL, CMSUB_PAGE, CMSUB_FRAME, + CMSUB_NAVIGATE, CMID_HISTORY, CMID_LAST }; @@ -119,6 +126,12 @@ void ami_context_menu_init(void) ctxmenulab[CMID_URLOPENWIN] = ami_utf8_easy((char *)messages_get("LinkNewWin")); ctxmenulab[CMID_URLOPENTAB] = ami_utf8_easy((char *)messages_get("LinkNewTab")); + ctxmenulab[CMID_NAVHOME] = ami_utf8_easy((char *)messages_get("Home")); + ctxmenulab[CMID_NAVBACK] = ami_utf8_easy((char *)messages_get("Back")); + ctxmenulab[CMID_NAVFORWARD] = ami_utf8_easy((char *)messages_get("Forward")); + ctxmenulab[CMID_NAVRELOAD] = ami_utf8_easy((char *)messages_get("ObjReload")); + ctxmenulab[CMID_NAVSTOP] = ami_utf8_easy((char *)messages_get("Stop")); + ctxmenulab[CMID_SELCUT] = ami_utf8_easy((char *)messages_get("CutNS")); ctxmenulab[CMID_SELCOPY] = ami_utf8_easy((char *)messages_get("CopyNS")); ctxmenulab[CMID_SELPASTE] = ami_utf8_easy((char *)messages_get("PasteNS")); @@ -130,6 +143,7 @@ void ami_context_menu_init(void) ctxmenulab[CMSUB_FRAME] = ami_utf8_easy((char *)messages_get("Frame")); ctxmenulab[CMSUB_OBJECT] = ami_utf8_easy((char *)messages_get("Object")); + ctxmenulab[CMSUB_NAVIGATE] = ami_utf8_easy((char *)messages_get("Navigate")); ctxmenulab[CMSUB_URL] = ami_utf8_easy((char *)messages_get("Link")); ctxmenulab[CMSUB_SEL] = ami_utf8_easy((char *)messages_get("Selection")); @@ -144,6 +158,7 @@ void ami_context_menu_add_submenu(Object *ctxmenuobj, ULONG cmsub, void *userdat * CMSUB_URL - userdata = char * * CMSUB_OBJECT - userdata = hlcache_object * * CMSUB_SEL - userdata = browser_window * + * CMSUB_NAVIGATE - userdata = browser_window * (only for menu construction) * CMID_PLUGINCMD - userdata = hlcache_object * * CMID_SELECTFILE - userdata = box * */ @@ -201,6 +216,45 @@ void ami_context_menu_add_submenu(Object *ctxmenuobj, ULONG cmsub, void *userdat ~0); break; + case CMSUB_NAVIGATE: + IDoMethod(ctxmenuobj, PM_INSERT, + NewObject(POPUPMENU_GetItemClass(), NULL, + PMIA_Title, (ULONG)ctxmenulab[CMSUB_NAVIGATE], + PMSIMPLESUB, + PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL, + PMIA_Title, (ULONG)ctxmenulab[CMID_NAVHOME], + PMIA_ID, CMID_NAVHOME, + PMIA_UserData, userdata, + TAG_DONE), + PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL, + PMIA_Title, (ULONG)ctxmenulab[CMID_NAVBACK], + PMIA_ID, CMID_NAVBACK, + PMIA_UserData, userdata, + PMIA_Disabled, !browser_window_back_available(userdata), + TAG_DONE), + PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL, + PMIA_Title, (ULONG)ctxmenulab[CMID_NAVFORWARD], + PMIA_ID, CMID_NAVFORWARD, + PMIA_UserData, userdata, + PMIA_Disabled, !browser_window_forward_available(userdata), + TAG_DONE), + PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL, + PMIA_Title, (ULONG)ctxmenulab[CMID_NAVRELOAD], + PMIA_ID, CMID_NAVRELOAD, + PMIA_UserData, userdata, + PMIA_Disabled, !browser_window_reload_available(userdata), + TAG_DONE), + PMA_AddItem, NewObject(POPUPMENU_GetItemClass(), NULL, + PMIA_Title, (ULONG)ctxmenulab[CMID_NAVSTOP], + PMIA_ID, CMID_NAVSTOP, + PMIA_UserData, userdata, + PMIA_Disabled, !browser_window_stop_available(userdata), + TAG_DONE), + TAG_DONE), + TAG_DONE), + ~0); + break; + case CMSUB_URL: IDoMethod(ctxmenuobj,PM_INSERT, NewObject(POPUPMENU_GetItemClass(), NULL, @@ -399,7 +453,7 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y) struct box *curbox; int box_x=0; int box_y=0; - bool no_sel = true; + bool no_sel = true, add_nav_menu = true; bool menuhascontent = false; ULONG ret = 0; struct contextual_content ccdata; @@ -465,6 +519,13 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y) { browser_window_get_contextual_content(gwin->bw, x, y, &ccdata); + if(ccdata.object && (content_get_type(ccdata.object) == CONTENT_PLUGIN)) + { + ami_context_menu_add_submenu(ctxmenuobj, CMID_PLUGINCMD, ccdata.object); + menuhascontent = true; + add_nav_menu = false; + } + if(ccdata.main && (ccdata.main != cc)) { ami_context_menu_add_submenu(ctxmenuobj, CMSUB_FRAME, ccdata.main); @@ -483,12 +544,6 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y) menuhascontent = true; } - if(ccdata.object && (content_get_type(ccdata.object) == CONTENT_PLUGIN)) - { - ami_context_menu_add_submenu(ctxmenuobj, CMID_PLUGINCMD, ccdata.object); - menuhascontent = true; - } - if(content_get_type(cc) == CONTENT_TEXTPLAIN) { ami_context_menu_add_submenu(ctxmenuobj, CMSUB_SEL, gwin->bw); @@ -521,11 +576,18 @@ void ami_context_menu_show(struct gui_window_2 *gwin,int x,int y) case GADGET_FILE: ami_context_menu_add_submenu(ctxmenuobj, CMID_SELECTFILE, curbox); menuhascontent = true; + add_nav_menu = false; break; } } } } + + if(add_nav_menu == true) + { + ami_context_menu_add_submenu(ctxmenuobj, CMSUB_NAVIGATE, gwin->bw); + menuhascontent = true; + } } if(!menuhascontent) return; @@ -717,6 +779,28 @@ static uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved } break; + case CMID_NAVHOME: + browser_window_go(gwin->bw, option_homepage_url, NULL, true); + break; + + case CMID_NAVBACK: + ami_gui_history(gwin, true); + break; + + case CMID_NAVFORWARD: + ami_gui_history(gwin, false); + break; + + case CMID_NAVSTOP: + if(browser_window_stop_available(gwin->bw)) + browser_window_stop(gwin->bw); + break; + + case CMID_NAVRELOAD: + if(browser_window_reload_available(gwin->bw)) + browser_window_reload(gwin->bw, true); + break; + case CMID_SELCUT: browser_window_key_press(gwin->bw, KEY_CUT_SELECTION); break; -- cgit v1.2.3