diff options
author | Vincent Sanders <vince@netsurf-browser.org> | 2013-02-14 15:09:28 +0000 |
---|---|---|
committer | Vincent Sanders <vince@netsurf-browser.org> | 2013-02-18 11:23:27 +0000 |
commit | 3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8 (patch) | |
tree | 40aa4e52aa50010c8f7c47dda79be2b77339e546 /amiga | |
parent | c545bb4b42dff8bfd4c288e330f52848ec2df6c4 (diff) | |
download | netsurf-3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8.tar.gz netsurf-3bfb5b96a7c7cb2718a60987e69cd659ed49b9d8.tar.bz2 |
browser_window_navigate refactor
Diffstat (limited to 'amiga')
-rwxr-xr-x | amiga/arexx.c | 50 | ||||
-rwxr-xr-x | amiga/context_menu.c | 86 | ||||
-rw-r--r-- | amiga/download.c | 18 | ||||
-rw-r--r-- | amiga/file.c | 17 | ||||
-rwxr-xr-x | amiga/gui.c | 139 | ||||
-rwxr-xr-x | amiga/menu.c | 21 | ||||
-rwxr-xr-x | amiga/tree.c | 20 |
7 files changed, 308 insertions, 43 deletions
diff --git a/amiga/arexx.c b/amiga/arexx.c index 7048c0673..66b1ad88e 100755 --- a/amiga/arexx.c +++ b/amiga/arexx.c @@ -223,12 +223,18 @@ STATIC VOID rx_open(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unu { struct dlnode *dln; struct browser_window *bw = curbw; + nsurl *url; cmd->ac_RC = 0; if((cmd->ac_ArgList[4]) && (cmd->ac_ArgList[5])) bw = ami_find_tab(*(ULONG *)cmd->ac_ArgList[4], *(ULONG *)cmd->ac_ArgList[5]); + if (nsurl_create((char *)cmd->ac_ArgList[0], &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + return; + } + if(cmd->ac_ArgList[3]) { if(!bw) return; @@ -238,27 +244,44 @@ STATIC VOID rx_open(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unu dln->node.ln_Name = strdup((char *)cmd->ac_ArgList[0]); dln->node.ln_Type = NT_USER; AddTail(&bw->window->dllist, (struct Node *)dln); - if(!bw->download) browser_window_download(curbw,(char *)cmd->ac_ArgList[0],NULL); + if(!bw->download) { + browser_window_navigate(curbw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_DOWNLOAD | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + } } else if(cmd->ac_ArgList[2]) { - browser_window_create((char *)cmd->ac_ArgList[0],NULL,NULL,true,true); + browser_window_create(url, NULL, NULL, true, true); } else if(cmd->ac_ArgList[1]) { - browser_window_create((char *)cmd->ac_ArgList[0],NULL,NULL,true,false); + browser_window_create(url, NULL, NULL, true, false); } else { if(bw) { - browser_window_go(bw,(char *)cmd->ac_ArgList[0],NULL,true); + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); } else { - browser_window_create((char *)cmd->ac_ArgList[0],NULL,NULL,true,false); + browser_window_create(url, NULL, NULL, true, false); } } + nsurl_unref(url); } STATIC VOID rx_save(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unused))) @@ -456,13 +479,28 @@ STATIC VOID rx_forward(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__(( STATIC VOID rx_home(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unused))) { struct browser_window *bw = curbw; + nsurl *url; cmd->ac_RC = 0; if((cmd->ac_ArgList[0]) && (cmd->ac_ArgList[1])) bw = ami_find_tab(*(ULONG *)cmd->ac_ArgList[0], *(ULONG *)cmd->ac_ArgList[1]); - if(bw) browser_window_go(bw, nsoption_charp(homepage_url), NULL, true); + if(bw == NULL) return; + + if (nsurl_create(nsoption_charp(homepage_url), &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } } STATIC VOID rx_reload(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unused))) diff --git a/amiga/context_menu.c b/amiga/context_menu.c index 2e09c99b6..952d5c2c8 100755 --- a/amiga/context_menu.c +++ b/amiga/context_menu.c @@ -788,19 +788,54 @@ static uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved case CMID_FRAMESAVE: case CMID_SAVEURL: - browser_window_download(gwin->bw, userdata, - nsurl_access(hlcache_handle_get_url(gwin->bw->current_content))); + { + nsurl *url; + if (nsurl_create(userdata, &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(gwin->bw, + url, + hlcache_handle_get_url(gwin->bw->current_content), + BROWSER_WINDOW_GO_FLAG_DOWNLOAD | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + } break; case CMID_FRAMESHOW: case CMID_SHOWOBJ: - browser_window_go(gwin->bw, nsurl_access(hlcache_handle_get_url(userdata)), - nsurl_access(hlcache_handle_get_url(gwin->bw->current_content)), true); + browser_window_navigate(gwin->bw, + hlcache_handle_get_url(userdata), + hlcache_handle_get_url(gwin->bw->current_content), + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + break; case CMID_URLOPEN: - browser_window_go(gwin->bw, userdata, - nsurl_access(hlcache_handle_get_url(gwin->bw->current_content)), true); + { + nsurl *url; + if (nsurl_create(userdata, &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(gwin->bw, + url, + hlcache_handle_get_url(gwin->bw->current_content), + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + } break; case CMID_FRAMERELOAD: @@ -860,7 +895,24 @@ static uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved break; case CMID_NAVHOME: - browser_window_go(gwin->bw, nsoption_charp(homepage_url), NULL, true); + { + nsurl *url; + + if (nsurl_create(nsoption_charp(homepage_url), &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + + } break; case CMID_NAVBACK: @@ -911,12 +963,26 @@ static uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved case CMID_SELSEARCH: { struct ami_text_selection *sel; - char *url; + char *urltxt; + nsurl *url; if(sel = ami_selection_to_text(gwin)) { - url = search_web_from_term(sel->text); - browser_window_go(gwin->bw, url, NULL, true); + urltxt = search_web_from_term(sel->text); + + if (nsurl_create(urltxt, &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } FreeVec(sel); } diff --git a/amiga/download.c b/amiga/download.c index c49bd8554..9db05ca49 100644 --- a/amiga/download.c +++ b/amiga/download.c @@ -291,7 +291,23 @@ void gui_download_window_done(struct gui_download_window *dw) DisposeObject(dw->objects[OID_MAIN]); DelObject(dw->node); - if(queuedl) browser_window_download(bw,dln2->node.ln_Name,NULL); + if(queuedl) { + nsurl *url; + if (nsurl_create(dln2->node.ln_Name, &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_DOWNLOAD | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + } + } BOOL ami_download_window_event(struct gui_download_window *dw) diff --git a/amiga/file.c b/amiga/file.c index 30a63b615..419cc2a4d 100644 --- a/amiga/file.c +++ b/amiga/file.c @@ -80,6 +80,7 @@ static const ULONG ami_file_asl_mime_hook(struct Hook *mh, void ami_file_open(struct gui_window_2 *gwin) { char *temp, *temp2; + nsurl *url; if(AslRequestTags(filereq, ASLFR_TitleText, messages_get("NetSurf"), @@ -94,7 +95,21 @@ void ami_file_open(struct gui_window_2 *gwin) strlcpy(temp, filereq->fr_Drawer, 1024); AddPart(temp, filereq->fr_File, 1024); temp2 = path_to_url(temp); - browser_window_go(gwin->bw, temp2, NULL, true); + + if (nsurl_create(temp2, &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + free(temp2); FreeVec(temp); } diff --git a/amiga/gui.c b/amiga/gui.c index 60950d244..62aa87713 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -1633,8 +1633,23 @@ void ami_handle_msg(void) { storage = (ULONG)search_web_from_term((char *)storage); } - - browser_window_go(gwin->bw,(char *)storage, NULL, true); + { + nsurl *url; + + if (nsurl_create((char *)storage, &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + } break; case GID_TOOLBARLAYOUT: @@ -1647,12 +1662,43 @@ void ami_handle_msg(void) (Object *)gwin->objects[GID_SEARCHSTRING], (ULONG *)&storage); storage = (ULONG)search_web_from_term((char *)storage); - - browser_window_go(gwin->bw,(char *)storage, NULL, true); + { + nsurl *url; + + if (nsurl_create((char *)storage, &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + } break; case GID_HOME: - browser_window_go(gwin->bw,nsoption_charp(homepage_url),NULL,true); + { + nsurl *url; + + if (nsurl_create(nsoption_charp(homepage_url), &url) != NSERROR_OK) { + warn_user("NoMemory", 0); + } else { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + } break; case GID_STOP: @@ -2070,16 +2116,32 @@ void ami_handle_appmsg(void) if(ami_mouse_to_ns_coords(gwin, &x, &y, appmsg->am_MouseX, appmsg->am_MouseY) == false) { + nsurl *url; urlfilename = path_to_url(filename); - if(i == 0) - { - browser_window_go(gwin->bw, urlfilename, NULL, true); - ActivateWindow(gwin->win); + if (nsurl_create(urlfilename, &url) != NSERROR_OK) { + warn_user("NoMemory", 0); } else { - browser_window_create(urlfilename, gwin->bw, 0, true, true); + if(i == 0) + { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + + ActivateWindow(gwin->win); + } + else + { + browser_window_create(url, NULL, gwin->bw, true, true); + } + nsurl_unref(url); } free(urlfilename); @@ -2088,16 +2150,33 @@ void ami_handle_appmsg(void) { if(browser_window_drop_file_at_point(gwin->bw, x, y, filename) == false) { + nsurl *url; urlfilename = path_to_url(filename); - if(i == 0) - { - browser_window_go(gwin->bw, urlfilename, NULL, true); - ActivateWindow(gwin->win); + if (nsurl_create(urlfilename, &url) != NSERROR_OK) { + warn_user("NoMemory", 0); } else { - browser_window_create(urlfilename, gwin->bw, 0, true, true); + + if(i == 0) + { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + + ActivateWindow(gwin->win); + } + else + { + browser_window_create(url, NULL, gwin->bw, true, true); + } + nsurl_unref(url); } free(urlfilename); } @@ -4519,7 +4598,8 @@ void ami_scroller_hook(struct Hook *hook,Object *object,struct IntuiMessage *msg struct IntuiWheelData *wheel; Object *reqrefresh = NULL; struct Node *node = NULL; - char *url; + char *urltxt; + nsurl *url; switch(msg->Class) { @@ -4539,12 +4619,29 @@ void ami_scroller_hook(struct Hook *hook,Object *object,struct IntuiMessage *msg case GID_HOTLIST: if(node = (struct Node *)GetTagData(SPEEDBAR_SelectedNode, 0, msg->IAddress)) { - GetSpeedButtonNodeAttrs(node, SBNA_UserData, (ULONG *)&url, TAG_DONE); - - if(gwin->key_state & BROWSER_MOUSE_MOD_2) { - browser_window_create(url, gwin->bw, NULL, false, true); + GetSpeedButtonNodeAttrs(node, SBNA_UserData, (ULONG *)&urltxt, TAG_DONE); + + if (nsurl_create(urltxt, &url) != NSERROR_OK) { + warn_user("NoMemory", 0); } else { - browser_window_go(gwin->bw, url, NULL, true); + if(gwin->key_state & BROWSER_MOUSE_MOD_2) { + browser_window_create(url, + NULL, + gwin->bw, + false, + true); + } else { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + + } + nsurl_unref(url); } } break; diff --git a/amiga/menu.c b/amiga/menu.c index 496400dfb..f480b3f69 100755 --- a/amiga/menu.c +++ b/amiga/menu.c @@ -985,11 +985,28 @@ static void ami_menu_item_hotlist_show(struct Hook *hook, APTR window, struct In static void ami_menu_item_hotlist_entries(struct Hook *hook, APTR window, struct IntuiMessage *msg) { - char *url = hook->h_Data; + nsurl *url; + nserror error; + char *urltxt = hook->h_Data; struct gui_window_2 *gwin; GetAttr(WINDOW_UserData, (Object *)window, (ULONG *)&gwin); - if(url) browser_window_go(gwin->bw, url, NULL, true); + if(urltxt == NULL) return; + + error = nsurl_create(addr, &url); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } } static void ami_menu_item_settings_edit(struct Hook *hook, APTR window, struct IntuiMessage *msg) diff --git a/amiga/tree.c b/amiga/tree.c index cbaef836e..32cd8a1fa 100755 --- a/amiga/tree.c +++ b/amiga/tree.c @@ -317,8 +317,24 @@ void ami_tree_drag_end(struct treeview_window *twin, int x, int y) { if(gwin = ami_window_at_pointer(AMINS_WINDOW)) { - browser_window_go(gwin->bw, tree_url_node_get_url(selected_node), - NULL, true); + nsurl *url; + nserror error; + + error = nsurl_create(tree_url_node_get_url(selected_node), &url); + if (error != NSERROR_OK) { + warn_user(messages_get_errorcode(error), 0); + } else { + browser_window_navigate(gwin->bw, + url, + NULL, + BROWSER_WINDOW_GO_FLAG_HISTORY | + BROWSER_WINDOW_GO_FLAG_VERIFIABLE, + NULL, + NULL, + NULL); + nsurl_unref(url); + } + } else if((tw = ami_window_at_pointer(AMINS_TVWINDOW)) && (tw != twin) && (tw->type == AMI_TREE_HOTLIST)) |