summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
Diffstat (limited to 'amiga')
-rwxr-xr-xamiga/arexx.c50
-rwxr-xr-xamiga/context_menu.c86
-rw-r--r--amiga/download.c18
-rw-r--r--amiga/file.c17
-rwxr-xr-xamiga/gui.c139
-rwxr-xr-xamiga/menu.c21
-rwxr-xr-xamiga/tree.c20
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))