change browser_window_create and refactor all callsites
This commit is contained in:
parent
3bfb5b96a7
commit
b112dec78d
|
@ -257,11 +257,22 @@ STATIC VOID rx_open(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unu
|
|||
}
|
||||
else if(cmd->ac_ArgList[2])
|
||||
{
|
||||
browser_window_create(url, NULL, NULL, true, true);
|
||||
browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
}
|
||||
else if(cmd->ac_ArgList[1])
|
||||
{
|
||||
browser_window_create(url, NULL, NULL, true, false);
|
||||
browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -278,7 +289,12 @@ STATIC VOID rx_open(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unu
|
|||
}
|
||||
else
|
||||
{
|
||||
browser_window_create(url, NULL, NULL, true, false);
|
||||
browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
}
|
||||
}
|
||||
nsurl_unref(url);
|
||||
|
|
|
@ -718,6 +718,8 @@ static uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved
|
|||
const char *source_data;
|
||||
ULONG source_size;
|
||||
struct bitmap *bm;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if(GetAttrs(item,PMIA_ID,&itemid,
|
||||
PMIA_UserData,&userdata,
|
||||
|
@ -776,14 +778,40 @@ static uint32 ami_context_menu_hook(struct Hook *hook,Object *item,APTR reserved
|
|||
|
||||
case CMID_FRAMEWIN:
|
||||
case CMID_URLOPENWIN:
|
||||
bw = browser_window_create(userdata, gwin->bw,
|
||||
nsurl_access(hlcache_handle_get_url(gwin->bw->current_content)), true, false);
|
||||
error = nsurl_create(userdata, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
hlcache_handle_get_url(gwin->bw->current_content),
|
||||
gwin->bw,
|
||||
&bw);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
|
||||
case CMID_FRAMETAB:
|
||||
case CMID_URLOPENTAB:
|
||||
bw = browser_window_create(userdata, gwin->bw,
|
||||
nsurl_access(hlcache_handle_get_url(gwin->bw->current_content)), true, true);
|
||||
error = nsurl_create(userdata, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
hlcache_handle_get_url(gwin->bw->current_content),
|
||||
gwin->bw,
|
||||
&bw);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case CMID_FRAMESAVE:
|
||||
|
|
201
amiga/gui.c
201
amiga/gui.c
|
@ -686,6 +686,8 @@ void ami_openscreenfirst(void)
|
|||
|
||||
static void gui_init2(int argc, char** argv)
|
||||
{
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
struct browser_window *bw = NULL;
|
||||
struct RDArgs *args;
|
||||
STRPTR temp_homepage_url = NULL;
|
||||
|
@ -726,7 +728,20 @@ static void gui_init2(int argc, char** argv)
|
|||
|
||||
if(notalreadyrunning)
|
||||
{
|
||||
bw = browser_window_create(temp_homepage_url, 0, 0, true,false);
|
||||
error = nsurl_create(temp_homepage_url, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
&bw);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
free(temp_homepage_url);
|
||||
}
|
||||
}
|
||||
|
@ -762,14 +777,36 @@ static void gui_init2(int argc, char** argv)
|
|||
|
||||
if(notalreadyrunning)
|
||||
{
|
||||
if(!first)
|
||||
{
|
||||
bw = browser_window_create(temp_homepage_url, 0, 0, true,false);
|
||||
first=1;
|
||||
error = nsurl_create(temp_homepage_url, &url);
|
||||
|
||||
|
||||
if (error == NSERROR_OK) {
|
||||
if(!first)
|
||||
{
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
&bw);
|
||||
|
||||
first=1;
|
||||
}
|
||||
else
|
||||
{
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
bw,
|
||||
&bw);
|
||||
|
||||
}
|
||||
nsurl_unref(url);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
bw = browser_window_create(temp_homepage_url, bw, 0, true,false);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
free(temp_homepage_url);
|
||||
temp_homepage_url = NULL;
|
||||
|
@ -841,8 +878,21 @@ static void gui_init2(int argc, char** argv)
|
|||
if(applibport) applibsig = (1L << applibport->mp_SigBit);
|
||||
}
|
||||
|
||||
if(!bw && (nsoption_bool(startup_no_window) == false))
|
||||
bw = browser_window_create(nsoption_charp(homepage_url), 0, 0, true,false);
|
||||
if(!bw && (nsoption_bool(startup_no_window) == false)) {
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Normal entry point from OS */
|
||||
|
@ -1622,7 +1672,25 @@ void ami_handle_msg(void)
|
|||
break;
|
||||
|
||||
case GID_ADDTAB:
|
||||
browser_window_create(nsoption_charp(homepage_url), gwin->bw, 0, true, true);
|
||||
{
|
||||
nsurl *urlns;
|
||||
nserror error;
|
||||
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &urlns);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
urlns,
|
||||
NULL,
|
||||
gwin->bw,
|
||||
NULL);
|
||||
nsurl_unref(urlns);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case GID_URL:
|
||||
|
@ -1756,15 +1824,47 @@ void ami_handle_msg(void)
|
|||
switch(nskey)
|
||||
{
|
||||
case 'n':
|
||||
if ((nsoption_bool(kiosk_mode) == false))
|
||||
browser_window_create(nsoption_charp(homepage_url), NULL,
|
||||
0, true, false);
|
||||
if ((nsoption_bool(kiosk_mode) == false)) {
|
||||
nsurl *urlns;
|
||||
nserror error;
|
||||
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &urlns);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
urlns,
|
||||
NULL,
|
||||
gwin->bw,
|
||||
NULL);
|
||||
nsurl_unref(urlns);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case 't':
|
||||
if((nsoption_bool(kiosk_mode) == false))
|
||||
browser_window_create(nsoption_charp(homepage_url),
|
||||
gwin->bw, 0, true, true);
|
||||
if((nsoption_bool(kiosk_mode) == false)) {
|
||||
nsurl *urlns;
|
||||
nserror error;
|
||||
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &urlns);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
urlns,
|
||||
NULL,
|
||||
gwin->bw,
|
||||
NULL);
|
||||
nsurl_unref(urlns);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
case 'k':
|
||||
|
@ -2139,7 +2239,13 @@ void ami_handle_appmsg(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
browser_window_create(url, NULL, gwin->bw, true, true);
|
||||
browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
NULL,
|
||||
gwin->bw,
|
||||
NULL);
|
||||
}
|
||||
nsurl_unref(url);
|
||||
}
|
||||
|
@ -2174,7 +2280,14 @@ void ami_handle_appmsg(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
browser_window_create(url, NULL, gwin->bw, true, true);
|
||||
browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
NULL,
|
||||
gwin->bw,
|
||||
NULL);
|
||||
|
||||
}
|
||||
nsurl_unref(url);
|
||||
}
|
||||
|
@ -2197,6 +2310,8 @@ void ami_handle_applib(void)
|
|||
{
|
||||
struct ApplicationMsg *applibmsg;
|
||||
struct browser_window *bw;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if(!applibport) return;
|
||||
|
||||
|
@ -2205,7 +2320,22 @@ void ami_handle_applib(void)
|
|||
switch (applibmsg->type)
|
||||
{
|
||||
case APPLIBMT_NewBlankDoc:
|
||||
bw = browser_window_create(nsoption_charp(homepage_url), 0, 0, true, false);
|
||||
{
|
||||
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
&bw);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case APPLIBMT_OpenDoc:
|
||||
|
@ -2215,7 +2345,20 @@ void ami_handle_applib(void)
|
|||
char *tempurl;
|
||||
|
||||
tempurl = path_to_url(applibopdmsg->fileName);
|
||||
bw = browser_window_create(tempurl, 0, 0, true, false);
|
||||
|
||||
error = nsurl_create(tempurl, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
&bw);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
free(tempurl);
|
||||
}
|
||||
break;
|
||||
|
@ -2229,7 +2372,21 @@ void ami_handle_applib(void)
|
|||
}
|
||||
else
|
||||
{
|
||||
bw = browser_window_create(nsoption_charp(homepage_url), 0, 0, true, false);
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
&bw);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
60
amiga/menu.c
60
amiga/menu.c
|
@ -700,18 +700,46 @@ void ami_menu_update_disabled(struct gui_window *g, hlcache_handle *c)
|
|||
|
||||
static void ami_menu_item_project_newwin(struct Hook *hook, APTR window, struct IntuiMessage *msg)
|
||||
{
|
||||
struct browser_window *bw;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
bw = browser_window_create(nsoption_charp(homepage_url), NULL, 0, true, false);
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void ami_menu_item_project_newtab(struct Hook *hook, APTR window, struct IntuiMessage *msg)
|
||||
{
|
||||
struct browser_window *bw;
|
||||
struct gui_window_2 *gwin;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
GetAttr(WINDOW_UserData, (Object *)window, (ULONG *)&gwin);
|
||||
|
||||
bw = browser_window_create(nsoption_charp(homepage_url), gwin->bw, 0, true, true);
|
||||
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
NULL,
|
||||
gwin->bw,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void ami_menu_item_project_open(struct Hook *hook, APTR window, struct IntuiMessage *msg)
|
||||
|
@ -763,6 +791,8 @@ static void ami_menu_item_project_about(struct Hook *hook, APTR window, struct I
|
|||
struct gui_window_2 *gwin;
|
||||
char *temp, *temp2;
|
||||
int sel;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
GetAttr(WINDOW_UserData, (Object *)window, (ULONG *)&gwin);
|
||||
|
||||
|
@ -795,10 +825,24 @@ static void ami_menu_item_project_about(struct Hook *hook, APTR window, struct I
|
|||
|
||||
free(temp2);
|
||||
|
||||
if(sel == 2)
|
||||
browser_window_create("about:credits", NULL, 0, true, false);
|
||||
else if(sel == 0)
|
||||
browser_window_create("about:licence", NULL, 0, true, false);
|
||||
if(sel == 2) {
|
||||
error = nsurl_create("about:credits", &url);
|
||||
} else if(sel == 0) {
|
||||
error = nsurl_create("about:licence", &url);
|
||||
}
|
||||
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
ami_reset_pointer(gwin);
|
||||
}
|
||||
|
|
|
@ -208,10 +208,11 @@ void context_popup(struct gui_window * gw, short x, short y)
|
|||
case POP_CTX_SAVE_LINK_AS:
|
||||
if (ctx->ccdata.link_url != NULL) {
|
||||
nsurl *url;
|
||||
if (nsurl_create(ctx->ccdata.link_url, &url) != NSERROR_OK) {
|
||||
warn_user("NoMemory", 0);
|
||||
} else {
|
||||
browser_window_navigate(
|
||||
nserror error;
|
||||
|
||||
error = nsurl_create(ctx->ccdata.link_url, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_navigate(
|
||||
gw->browser->bw,
|
||||
url,
|
||||
hlcache_handle_get_url(gw->browser->bw->current_content),
|
||||
|
@ -223,6 +224,9 @@ void context_popup(struct gui_window * gw, short x, short y)
|
|||
);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -244,12 +248,22 @@ void context_popup(struct gui_window * gw, short x, short y)
|
|||
|
||||
case POP_CTX_OPEN_NEW:
|
||||
if ((ctx->flags & CNT_HREF) && ctx->ccdata.link_url) {
|
||||
browser_window_create(
|
||||
ctx->ccdata.link_url,
|
||||
gw->browser->bw,
|
||||
nsurl_access(hlcache_handle_get_url(gw->browser->bw->current_content)),
|
||||
true, false
|
||||
);
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
error = nsurl_create(ctx->ccdata.link_url, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
hlcache_handle_get_url(gw->browser->bw->current_content),
|
||||
gw->browser->bw
|
||||
);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
|
@ -148,18 +148,59 @@ static void __CDECL evnt_menu(WINDOW * win, short buff[8])
|
|||
|
||||
static void __CDECL menu_about(short item, short title, void *data)
|
||||
{
|
||||
LOG(("%s", __FUNCTION__));
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
char buf[PATH_MAX];
|
||||
|
||||
LOG(("%s", __FUNCTION__));
|
||||
strcpy((char*)&buf, "file://");
|
||||
strncat((char*)&buf, (char*)"./doc/README.TXT",
|
||||
PATH_MAX - (strlen("file://")+1) );
|
||||
browser_window_create((char*)&buf, 0, 0, true, false);
|
||||
|
||||
error = nsurl_create(buf, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void __CDECL menu_new_win(short item, short title, void *data)
|
||||
{
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
const char *addr;
|
||||
|
||||
LOG(("%s", __FUNCTION__));
|
||||
browser_window_create(option_homepage_url, 0, 0, true, false);
|
||||
|
||||
if (nsoption_charp(homepage_url) != NULL) {
|
||||
addr = nsoption_charp(homepage_url);
|
||||
} else {
|
||||
addr = NETSURF_HOMEPAGE;
|
||||
}
|
||||
|
||||
/* create an initial browser window */
|
||||
error = nsurl_create(addr, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void __CDECL menu_open_url(short item, short title, void *data)
|
||||
|
@ -170,7 +211,12 @@ static void __CDECL menu_open_url(short item, short title, void *data)
|
|||
|
||||
gw = input_window;
|
||||
if( gw == NULL ) {
|
||||
bw = browser_window_create("", 0, 0, true, false);
|
||||
browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL,
|
||||
&bw);
|
||||
gw = bw->window;
|
||||
}
|
||||
/* Loose focus: */
|
||||
|
@ -185,17 +231,31 @@ static void __CDECL menu_open_url(short item, short title, void *data)
|
|||
|
||||
static void __CDECL menu_open_file(short item, short title, void *data)
|
||||
{
|
||||
struct gui_window * gw;
|
||||
struct browser_window * bw ;
|
||||
|
||||
LOG(("%s", __FUNCTION__));
|
||||
|
||||
const char * filename = file_select(messages_get("OpenFile"), "");
|
||||
if( filename != NULL ){
|
||||
char * url = local_file_to_url( filename );
|
||||
if( url ){
|
||||
bw = browser_window_create(url, NULL, NULL, true, false);
|
||||
free( url );
|
||||
char * urltxt = local_file_to_url( filename );
|
||||
if( urltxt ){
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
error = nsurl_create(urltxt, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
free( urltxt );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
28
atari/gui.c
28
atari/gui.c
|
@ -1027,6 +1027,9 @@ static void gui_init2(int argc, char** argv)
|
|||
int main(int argc, char** argv)
|
||||
{
|
||||
char messages[PATH_MAX];
|
||||
const char *addr;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
setbuf(stderr, NULL);
|
||||
setbuf(stdout, NULL);
|
||||
|
@ -1056,10 +1059,29 @@ int main(int argc, char** argv)
|
|||
graf_mouse( ARROW , NULL);
|
||||
|
||||
LOG(("Creating initial browser window..."));
|
||||
browser_window_create(option_homepage_url, 0, 0, true, false);
|
||||
if (nsoption_charp(homepage_url) != NULL) {
|
||||
addr = nsoption_charp(homepage_url);
|
||||
} else {
|
||||
addr = NETSURF_HOMEPAGE;
|
||||
}
|
||||
|
||||
LOG(("Entering NetSurf mainloop..."));
|
||||
netsurf_main_loop();
|
||||
/* create an initial browser window */
|
||||
error = nsurl_create(addr, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
LOG(("Entering NetSurf mainloop..."));
|
||||
netsurf_main_loop();
|
||||
}
|
||||
|
||||
netsurf_exit();
|
||||
LOG(("ApplExit"));
|
||||
|
|
29
beos/gui.cpp
29
beos/gui.cpp
|
@ -426,14 +426,33 @@ nsurl *gui_get_resource_url(const char *path)
|
|||
|
||||
static void gui_init2(int argc, char** argv)
|
||||
{
|
||||
const char *addr = NETSURF_HOMEPAGE;
|
||||
const char *addr;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (nsoption_charp(homepage_url) != NULL)
|
||||
if (argc > 1) {
|
||||
addr = argv[1];
|
||||
} else if (nsoption_charp(homepage_url) != NULL) {
|
||||
addr = nsoption_charp(homepage_url);
|
||||
} else {
|
||||
addr = NETSURF_HOMEPAGE;
|
||||
}
|
||||
|
||||
/* create an initial browser window */
|
||||
error = nsurl_create(addr, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
if (argc > 1) addr = argv[1];
|
||||
if (gFirstRefsReceived) addr = NULL;
|
||||
browser_window_create(addr, 0, 0, true, false);
|
||||
if (gFirstRefsReceived) {
|
||||
// resend the refs we got before having a window to send them to
|
||||
be_app_messenger.SendMessage(gFirstRefsReceived);
|
||||
|
|
|
@ -786,9 +786,7 @@ void nsbeos_scaffolding_dispatch_event(nsbeos_scaffolding *scaffold, BMessage *m
|
|||
nserror error;
|
||||
|
||||
error = nsurl_create(url.String(), &nsurl);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
if (error == NSERROR_OK) {
|
||||
if (/*message->WasDropped() &&*/ i == 0) {
|
||||
browser_window_navigate(bw,
|
||||
nsurl,
|
||||
|
@ -799,21 +797,40 @@ void nsbeos_scaffolding_dispatch_event(nsbeos_scaffolding *scaffold, BMessage *m
|
|||
NULL,
|
||||
NULL);
|
||||
} else {
|
||||
browser_window_create(nsurl, NULL, bw, false, false);
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
nsurl,
|
||||
NULL,
|
||||
bw,
|
||||
NULL);
|
||||
}
|
||||
nsurl_unref(nsurl);
|
||||
}
|
||||
|
||||
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case B_ARGV_RECEIVED:
|
||||
{
|
||||
int32 i;
|
||||
BString url;
|
||||
for (i = 1; message->FindString("argv", i, &url) >= B_OK; i++) {
|
||||
browser_window_create(url.String(), bw, NULL, false, false);
|
||||
BString urltxt;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
for (i = 1; message->FindString("argv", i, &urltxt) >= B_OK; i++) {
|
||||
error = nsurl_create(urltxt.String(), &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
url,
|
||||
NULL,
|
||||
bw,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -1010,13 +1027,28 @@ void nsbeos_scaffolding_dispatch_event(nsbeos_scaffolding *scaffold, BMessage *m
|
|||
case BROWSER_NEW_WINDOW:
|
||||
{
|
||||
BString text;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (!scaffold->url_bar->LockLooper())
|
||||
break;
|
||||
text = scaffold->url_bar->Text();
|
||||
scaffold->url_bar->UnlockLooper();
|
||||
|
||||
NSBrowserWindow::activeWindow = scaffold->window;
|
||||
browser_window_create(text.String(), bw, NULL, false, false);
|
||||
|
||||
error = nsurl_create(text.String(), &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
url,
|
||||
NULL,
|
||||
bw,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case BROWSER_VIEW_SOURCE:
|
||||
|
|
|
@ -135,12 +135,10 @@ static const char *cocoa_hotlist_path( void )
|
|||
nserror error;
|
||||
|
||||
error = nsurl_create(urltxt, &url);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
if (error == NSERROR_OK) {
|
||||
BrowserViewController *tab = [(NetSurfApp *)NSApp frontTab];
|
||||
if (tab != nil) {
|
||||
browser_window_navigate([tab browser],
|
||||
error = browser_window_navigate([tab browser],
|
||||
url,
|
||||
NULL,
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
|
@ -149,13 +147,18 @@ static const char *cocoa_hotlist_path( void )
|
|||
NULL,
|
||||
NULL);
|
||||
} else {
|
||||
browser_window_create( url, NULL, NULL, true, false );
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
}
|
||||
|
||||
nsurl_unref(url);
|
||||
}
|
||||
|
||||
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction) addBookmark: (id) sender;
|
||||
|
|
|
@ -575,12 +575,43 @@ static browser_mouse_state cocoa_mouse_flags_for_event( NSEvent *evt )
|
|||
|
||||
- (IBAction) cmOpenURLInTab: (id) sender;
|
||||
{
|
||||
browser_window_create( [[sender representedObject] UTF8String], browser, NULL, true, true );
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
error = nsurl_create([[sender representedObject] UTF8String], &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
NULL,
|
||||
browser,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction) cmOpenURLInWindow: (id) sender;
|
||||
{
|
||||
browser_window_create( [[sender representedObject] UTF8String], browser, NULL, true, false );
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
error = nsurl_create([[sender representedObject] UTF8String], &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
browser,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction) cmDownloadURL: (id) sender;
|
||||
|
|
|
@ -150,7 +150,27 @@
|
|||
|
||||
- (IBAction) newTab: (id) sender;
|
||||
{
|
||||
browser_window_create( nsoption_charp(homepage_url), [activeBrowser browser], NULL, false, true );
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (nsoption_charp(homepage_url) != NULL) {
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &url);
|
||||
} else {
|
||||
error = nsurl_create(NETSURF_HOMEPAGE, &url);
|
||||
}
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
NULL,
|
||||
[activeBrowser browser],
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction) closeCurrentTab: (id) sender;
|
||||
|
|
|
@ -39,24 +39,74 @@
|
|||
|
||||
- (void) newDocument: (id) sender;
|
||||
{
|
||||
browser_window_create( nsoption_charp(homepage_url), NULL, NULL, true, false );
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (nsoption_charp(homepage_url) != NULL) {
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &url);
|
||||
} else {
|
||||
error = nsurl_create(NETSURF_HOMEPAGE, &url);
|
||||
}
|
||||
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
- (void) openDocument: (id) sender;
|
||||
{
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
NSOpenPanel *openPanel = [NSOpenPanel openPanel];
|
||||
[openPanel setAllowsMultipleSelection: YES];
|
||||
if ([openPanel runModalForTypes: nil] == NSOKButton) {
|
||||
for (NSURL *url in [openPanel URLs]) {
|
||||
browser_window_create( [[url absoluteString] UTF8String], NULL, NULL, true, false );
|
||||
error = nsurl_create([[url absoluteString] UTF8String], &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent
|
||||
{
|
||||
NSString *urlAsString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
|
||||
browser_window_create( [urlAsString UTF8String], NULL, NULL, true, false );
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
NSString *urlAsString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
|
||||
|
||||
error = nsurl_create([urlAsString UTF8String], &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
- (IBAction) showSearchWindow: (id) sender;
|
||||
|
@ -124,9 +174,25 @@
|
|||
|
||||
- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename
|
||||
{
|
||||
NSURL *url = [NSURL fileURLWithPath: filename];
|
||||
browser_window_create( [[url absoluteString] UTF8String], NULL, NULL, true, false );
|
||||
return YES;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
NSURL *urltxt = [NSURL fileURLWithPath: filename];
|
||||
|
||||
error = nsurl_create([[urltxt absoluteString] UTF8String], &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
return YES;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -175,6 +175,9 @@ void gui_options_init_defaults(void)
|
|||
|
||||
int main( int argc, char **argv )
|
||||
{
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
cocoa_autorelease();
|
||||
|
||||
const char * const messages = [[[NSBundle mainBundle] pathForResource: @"Messages" ofType: @""] UTF8String];
|
||||
|
@ -193,7 +196,20 @@ int main( int argc, char **argv )
|
|||
/* skip -psn_* and other possible options */
|
||||
if (argv[i][0] == '-')
|
||||
continue;
|
||||
browser_window_create( argv[i], NULL, NULL, true, false );
|
||||
|
||||
error = nsurl_create(argv[i], &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
[app run];
|
||||
|
|
|
@ -659,34 +659,29 @@ void browser_window_debug_dump(struct browser_window *bw, FILE *f)
|
|||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create and open a new root browser window with the given page.
|
||||
*
|
||||
* \param url URL to start fetching in the new window
|
||||
* \param referer The referring uri or NULL if none
|
||||
* \param clone The browser window to clone
|
||||
* \param history_add add to history
|
||||
* \param new_tab create a new tab
|
||||
* \return new browser window or NULL on error
|
||||
*/
|
||||
/* exported interface, documented in desktop/browser.h */
|
||||
|
||||
struct browser_window *
|
||||
browser_window_create(nsurl *url,
|
||||
nsurl *referer,
|
||||
nserror
|
||||
browser_window_create(enum browser_window_nav_flags flags,
|
||||
nsurl *url,
|
||||
nsurl *referrer,
|
||||
struct browser_window *clone,
|
||||
bool history_add,
|
||||
bool new_tab)
|
||||
struct browser_window **ret_bw)
|
||||
{
|
||||
struct browser_window *bw;
|
||||
struct browser_window *top;
|
||||
|
||||
assert(clone || history_add);
|
||||
/* caller must provide window to clone or be adding to history */
|
||||
assert(clone ||
|
||||
((flags & BROWSER_WINDOW_GO_FLAG_HISTORY) != 0));
|
||||
|
||||
if ((bw = calloc(1, sizeof *bw)) == NULL) {
|
||||
|
||||
if ((bw = calloc(1, sizeof(struct browser_window))) == NULL) {
|
||||
warn_user("NoMemory", 0);
|
||||
return NULL;
|
||||
return NSERROR_NOMEM;
|
||||
}
|
||||
|
||||
/* new javascript context for window */
|
||||
bw->jsctx = js_newcontext();
|
||||
|
||||
/* Initialise common parts */
|
||||
|
@ -705,23 +700,25 @@ browser_window_create(nsurl *url,
|
|||
* so find that. */
|
||||
top = browser_window_get_root(clone);
|
||||
|
||||
bw->window = gui_create_browser_window(bw, top, new_tab);
|
||||
bw->window = gui_create_browser_window(bw,
|
||||
top,
|
||||
((flags & BROWSER_WINDOW_GO_FLAG_TAB) != 0));
|
||||
|
||||
if (bw->window == NULL) {
|
||||
browser_window_destroy(bw);
|
||||
return NULL;
|
||||
return NSERROR_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
if (url != NULL) {
|
||||
enum browser_window_nav_flags flags;
|
||||
flags = BROWSER_WINDOW_GO_FLAG_VERIFIABLE;
|
||||
if (history_add) {
|
||||
flags |= BROWSER_WINDOW_GO_FLAG_HISTORY;
|
||||
}
|
||||
browser_window_navigate(bw, url, referer, flags, NULL, NULL, NULL);
|
||||
flags |= BROWSER_WINDOW_GO_FLAG_VERIFIABLE;
|
||||
browser_window_navigate(bw, url, referrer, flags, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
return bw;
|
||||
if (ret_bw != NULL) {
|
||||
*ret_bw = bw;
|
||||
}
|
||||
|
||||
return NSERROR_OK;
|
||||
}
|
||||
|
||||
|
||||
|
@ -2315,6 +2312,7 @@ struct browser_window *browser_window_find_target(struct browser_window *bw,
|
|||
struct browser_window *top;
|
||||
hlcache_handle *c;
|
||||
int rdepth;
|
||||
nserror error;
|
||||
|
||||
/* use the base target if we don't have one */
|
||||
c = bw->current_content;
|
||||
|
@ -2353,9 +2351,15 @@ struct browser_window *browser_window_find_target(struct browser_window *bw,
|
|||
* OR
|
||||
* - button_2 opens in new tab and the link target is "_blank"
|
||||
*/
|
||||
bw_target = browser_window_create(NULL, NULL, bw, false, true);
|
||||
if (!bw_target)
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
NULL,
|
||||
NULL,
|
||||
bw,
|
||||
&bw_target);
|
||||
if (error != NSERROR_OK) {
|
||||
return bw;
|
||||
}
|
||||
return bw_target;
|
||||
} else if (((!nsoption_bool(button_2_tab)) &&
|
||||
(mouse & BROWSER_MOUSE_CLICK_2)) ||
|
||||
|
@ -2374,9 +2378,14 @@ struct browser_window *browser_window_find_target(struct browser_window *bw,
|
|||
* - button_2 doesn't open in new tabs and the link target is
|
||||
* "_blank"
|
||||
*/
|
||||
bw_target = browser_window_create(NULL, NULL, bw, false, false);
|
||||
if (!bw_target)
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
NULL,
|
||||
NULL,
|
||||
bw,
|
||||
&bw_target);
|
||||
if (error != NSERROR_OK) {
|
||||
return bw;
|
||||
}
|
||||
return bw_target;
|
||||
} else if ((target == TARGET_SELF) || (!strcasecmp(target, "_self"))) {
|
||||
return bw;
|
||||
|
@ -2408,9 +2417,14 @@ struct browser_window *browser_window_find_target(struct browser_window *bw,
|
|||
if (!nsoption_bool(target_blank))
|
||||
return bw;
|
||||
|
||||
bw_target = browser_window_create(NULL, NULL, bw, false, false);
|
||||
if (!bw_target)
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
NULL,
|
||||
NULL,
|
||||
bw,
|
||||
&bw_target);
|
||||
if (error != NSERROR_OK) {
|
||||
return bw;
|
||||
}
|
||||
|
||||
/* frame names should begin with an alphabetic character (a-z,A-Z),
|
||||
* however in practice you get things such as '_new' and '2left'. The
|
||||
|
|
|
@ -73,6 +73,8 @@ enum browser_window_nav_flags {
|
|||
BROWSER_WINDOW_GO_FLAG_DOWNLOAD = 2,
|
||||
/** this transaction is verifiable */
|
||||
BROWSER_WINDOW_GO_FLAG_VERIFIABLE = 4,
|
||||
/** open a new tab rather than a new window */
|
||||
BROWSER_WINDOW_GO_FLAG_TAB = 8,
|
||||
};
|
||||
|
||||
void browser_window_initialise_common(struct browser_window *bw,
|
||||
|
@ -81,29 +83,29 @@ void browser_window_initialise_common(struct browser_window *bw,
|
|||
/**
|
||||
* Create and open a new root browser window with the given page.
|
||||
*
|
||||
* \param url URL to start fetching in the new window
|
||||
* \param referer The referring uri or NULL if none
|
||||
* \param clone The browser window to clone
|
||||
* \param history_add add to history
|
||||
* \param new_tab create a new tab
|
||||
* \return new browser window or NULL on error
|
||||
* \param flags Flags to control operation
|
||||
* \param url URL to start fetching in the new window or NULL for blank
|
||||
* \param referer The referring uri or NULL if none
|
||||
* \param clone The browser window to clone
|
||||
* \param bw pointer to created browser window or untouched on error.
|
||||
* \return error code
|
||||
*/
|
||||
struct browser_window *browser_window_create(nsurl *url,
|
||||
nsurl *referer,
|
||||
struct browser_window *clone,
|
||||
bool history_add,
|
||||
bool new_tab);
|
||||
nserror browser_window_create(enum browser_window_nav_flags flags,
|
||||
nsurl *url,
|
||||
nsurl *referrer,
|
||||
struct browser_window *clone,
|
||||
struct browser_window **bw);
|
||||
|
||||
/**
|
||||
* Start fetching a page in a browser window.
|
||||
*
|
||||
* \param bw browser window
|
||||
* \param url URL to start fetching
|
||||
* \param flags Flags to control operation
|
||||
* \param referrer The referring uri or NULL if none
|
||||
* \param post_urlenc url encoded post data or NULL if none
|
||||
* \param post_multipart multipart post data or NULL if none
|
||||
* \param parent Parent content or NULL if none
|
||||
* \param flags Flags to control operation
|
||||
*
|
||||
* Any existing fetches in the window are aborted.
|
||||
*
|
||||
|
|
|
@ -461,7 +461,12 @@ void history_go(struct browser_window *bw,
|
|||
if (new_window) {
|
||||
current = history->current;
|
||||
history->current = entry;
|
||||
browser_window_create(url, NULL, bw, false, false);
|
||||
|
||||
browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
url,
|
||||
NULL,
|
||||
bw,
|
||||
NULL);
|
||||
history->current = current;
|
||||
} else {
|
||||
history->current = entry;
|
||||
|
|
|
@ -59,14 +59,32 @@ static nserror search_web_ico_callback(hlcache_handle *ico,
|
|||
bool search_web_new_window(struct browser_window *bw, const char *searchterm)
|
||||
{
|
||||
char *encsearchterm;
|
||||
char *url;
|
||||
if (url_escape(searchterm,0, true, NULL, &encsearchterm) !=
|
||||
URL_FUNC_OK)
|
||||
char *urltxt;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (url_escape(searchterm,0, true, NULL, &encsearchterm) != URL_FUNC_OK)
|
||||
return false;
|
||||
url = search_web_get_url(encsearchterm);
|
||||
|
||||
urltxt = search_web_get_url(encsearchterm);
|
||||
free(encsearchterm);
|
||||
browser_window_create(url, bw, NULL, true, true);
|
||||
free(url);
|
||||
|
||||
error = nsurl_create(urltxt, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
NULL,
|
||||
bw,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
free(urltxt);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
|
@ -356,7 +356,7 @@ node_callback_resp tree_url_node_callback(void *user_data,
|
|||
{
|
||||
struct tree *tree;
|
||||
struct node_element *element;
|
||||
nsurl *nsurl;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
const char *text;
|
||||
char *norm_text;
|
||||
|
@ -372,13 +372,13 @@ node_callback_resp tree_url_node_callback(void *user_data,
|
|||
*/
|
||||
case TREE_ELEMENT_URL:
|
||||
/* reset URL characteristics */
|
||||
error = nsurl_create(msg_data->data.text, &nsurl);
|
||||
error = nsurl_create(msg_data->data.text, &url);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user("NoMemory", 0);
|
||||
return NODE_CALLBACK_REJECT;
|
||||
}
|
||||
urldb_reset_url_visit_data(nsurl);
|
||||
nsurl_unref(nsurl);
|
||||
urldb_reset_url_visit_data(url);
|
||||
nsurl_unref(url);
|
||||
return NODE_CALLBACK_HANDLED;
|
||||
case TREE_ELEMENT_TITLE:
|
||||
return NODE_CALLBACK_HANDLED;
|
||||
|
@ -393,29 +393,45 @@ node_callback_resp tree_url_node_callback(void *user_data,
|
|||
element = tree_node_find_element(msg_data->node,
|
||||
TREE_ELEMENT_URL, NULL);
|
||||
if (element != NULL) {
|
||||
nserror error;
|
||||
enum browser_window_nav_flags flags;
|
||||
|
||||
text = tree_node_element_get_text(element);
|
||||
if (msg_data->flag == TREE_ELEMENT_LAUNCH_IN_TABS) {
|
||||
msg_data->data.bw = browser_window_create(text,
|
||||
msg_data->data.bw, 0, true, true);
|
||||
} else {
|
||||
browser_window_create(text, NULL, 0,
|
||||
true, false);
|
||||
|
||||
error = nsurl_create(text, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
flags = BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY;
|
||||
if (msg_data->flag == TREE_ELEMENT_LAUNCH_IN_TABS) {
|
||||
flags |= BROWSER_WINDOW_GO_FLAG_TAB;
|
||||
}
|
||||
error = browser_window_create(flags,
|
||||
url,
|
||||
NULL,
|
||||
msg_data->data.bw,
|
||||
&msg_data->data.bw);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
return NODE_CALLBACK_HANDLED;
|
||||
}
|
||||
break;
|
||||
|
||||
case NODE_ELEMENT_EDIT_FINISHING:
|
||||
|
||||
text = msg_data->data.text;
|
||||
|
||||
if (msg_data->flag == TREE_ELEMENT_URL) {
|
||||
size_t len;
|
||||
error = nsurl_create(text, &nsurl);
|
||||
error = nsurl_create(text, &url);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user("NoMemory", 0);
|
||||
return NODE_CALLBACK_REJECT;
|
||||
}
|
||||
error = nsurl_get(nsurl, NSURL_WITH_FRAGMENT,
|
||||
error = nsurl_get(url, NSURL_WITH_FRAGMENT,
|
||||
&norm_text, &len);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user("NoMemory", 0);
|
||||
|
@ -424,20 +440,20 @@ node_callback_resp tree_url_node_callback(void *user_data,
|
|||
|
||||
msg_data->data.text = norm_text;
|
||||
|
||||
data = urldb_get_url_data(nsurl);
|
||||
data = urldb_get_url_data(url);
|
||||
if (data == NULL) {
|
||||
urldb_add_url(nsurl);
|
||||
urldb_set_url_persistence(nsurl, true);
|
||||
data = urldb_get_url_data(nsurl);
|
||||
urldb_add_url(url);
|
||||
urldb_set_url_persistence(url, true);
|
||||
data = urldb_get_url_data(url);
|
||||
if (data == NULL) {
|
||||
nsurl_unref(nsurl);
|
||||
nsurl_unref(url);
|
||||
return NODE_CALLBACK_REJECT;
|
||||
}
|
||||
}
|
||||
tree = user_data;
|
||||
tree_update_URL_node(tree, msg_data->node,
|
||||
nsurl, NULL);
|
||||
nsurl_unref(nsurl);
|
||||
url, NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
else if (msg_data->flag == TREE_ELEMENT_TITLE) {
|
||||
while (isspace(*text))
|
||||
|
|
|
@ -528,6 +528,8 @@ main(int argc, char** argv)
|
|||
struct browser_window *bw;
|
||||
char *options;
|
||||
char *messages;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
setbuf(stderr, NULL);
|
||||
|
||||
|
@ -543,12 +545,27 @@ main(int argc, char** argv)
|
|||
|
||||
gui_init(argc, argv);
|
||||
|
||||
/* create an initial browser window */
|
||||
|
||||
LOG(("calling browser_window_create"));
|
||||
bw = browser_window_create(feurl, 0, 0, true, false);
|
||||
|
||||
netsurf_main_loop();
|
||||
error = nsurl_create(feurl, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
&bw);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
netsurf_main_loop();
|
||||
|
||||
browser_window_destroy(bw);
|
||||
browser_window_destroy(bw);
|
||||
}
|
||||
|
||||
netsurf_exit();
|
||||
|
||||
|
|
|
@ -254,11 +254,14 @@ void nsgtk_source_dialog_init(GtkWindow *parent, struct browser_window *bw)
|
|||
gtk_widget_show(GTK_WIDGET(wndSource));
|
||||
|
||||
}
|
||||
|
||||
void nsgtk_source_tab_init(GtkWindow *parent, struct browser_window *bw)
|
||||
{
|
||||
const char *source_data;
|
||||
unsigned long source_size;
|
||||
char *ndata = 0;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
source_data = content_get_source_data(bw->current_content,
|
||||
&source_size);
|
||||
|
@ -298,8 +301,23 @@ void nsgtk_source_tab_init(GtkWindow *parent, struct browser_window *bw)
|
|||
warn_user(messages_get("NoMemory"), 0);
|
||||
return;
|
||||
}
|
||||
|
||||
/* Open tab */
|
||||
browser_window_create(fileurl, bw, NULL, false, true);
|
||||
error = nsurl_create(fileurl, &url);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
NULL,
|
||||
bw,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
free(fileurl);
|
||||
}
|
||||
|
||||
|
|
35
gtk/gui.c
35
gtk/gui.c
|
@ -351,8 +351,10 @@ nsurl *gui_get_resource_url(const char *path)
|
|||
static void gui_init(int argc, char** argv, char **respath)
|
||||
{
|
||||
char buf[PATH_MAX];
|
||||
const char *addr = NETSURF_HOMEPAGE;
|
||||
char *resource_filename;
|
||||
const char *addr;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
/* check user options */
|
||||
check_options(respath);
|
||||
|
@ -457,15 +459,32 @@ static void gui_init(int argc, char** argv, char **respath)
|
|||
|
||||
sslcert_init(tree_content_icon_name);
|
||||
|
||||
if (nsoption_charp(homepage_url) != NULL) {
|
||||
addr = nsoption_charp(homepage_url);
|
||||
/* If there is a url specified on the command line use it */
|
||||
if (argc > 1) {
|
||||
addr = argv[1];
|
||||
} else if (nsoption_charp(homepage_url) != NULL) {
|
||||
addr = nsoption_charp(homepage_url);
|
||||
} else {
|
||||
addr = NETSURF_HOMEPAGE;
|
||||
}
|
||||
|
||||
if (2 <= argc)
|
||||
addr = argv[1];
|
||||
/* create an initial browser window */
|
||||
error = nsurl_create(addr, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
netsurf_main_loop();
|
||||
}
|
||||
|
||||
/* Last step of initialization. Opens the main browser window. */
|
||||
browser_window_create(addr, 0, 0, true, false);
|
||||
}
|
||||
|
||||
|
||||
|
@ -524,8 +543,6 @@ int main(int argc, char** argv)
|
|||
|
||||
gui_init(argc, argv, respaths);
|
||||
|
||||
netsurf_main_loop();
|
||||
|
||||
/* Ensure all scaffoldings are destroyed before we go into exit */
|
||||
while (scaf_list != NULL)
|
||||
nsgtk_scaffolding_destroy(scaf_list);
|
||||
|
|
|
@ -579,15 +579,28 @@ static void nsgtk_openfile_open(const char *filename)
|
|||
MULTIHANDLER(newwindow)
|
||||
{
|
||||
struct browser_window *bw = nsgtk_get_browser_window(g->top_level);
|
||||
const char *url = nsoption_charp(homepage_url);
|
||||
const char *addr;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (url != NULL)
|
||||
url = NULL;
|
||||
if (nsoption_charp(homepage_url) != NULL) {
|
||||
addr = nsoption_charp(homepage_url);
|
||||
} else {
|
||||
addr = NETSURF_HOMEPAGE;
|
||||
}
|
||||
|
||||
if (url == NULL)
|
||||
url = NETSURF_HOMEPAGE;
|
||||
|
||||
browser_window_create(url, bw, NULL, false, false);
|
||||
error = nsurl_create(addr, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
url,
|
||||
NULL,
|
||||
bw,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -595,25 +608,41 @@ MULTIHANDLER(newwindow)
|
|||
MULTIHANDLER(newtab)
|
||||
{
|
||||
struct browser_window *bw = nsgtk_get_browser_window(g->top_level);
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (nsoption_bool(new_blank)) {
|
||||
browser_window_create(NULL, bw, NULL, false, true);
|
||||
GtkWidget *window = gtk_notebook_get_nth_page(g->notebook, -1);
|
||||
nsgtk_widget_override_background_color(window,
|
||||
GTK_STATE_NORMAL,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF);
|
||||
} else {
|
||||
const char *url = nsoption_charp(homepage_url);
|
||||
|
||||
if (url != NULL)
|
||||
url = NULL;
|
||||
|
||||
if (url == NULL)
|
||||
url = NETSURF_HOMEPAGE;
|
||||
|
||||
browser_window_create(url, bw, NULL, false, true);
|
||||
if (!nsoption_bool(new_blank)) {
|
||||
const char *addr;
|
||||
if (nsoption_charp(homepage_url) != NULL) {
|
||||
addr = nsoption_charp(homepage_url);
|
||||
} else {
|
||||
addr = NETSURF_HOMEPAGE;
|
||||
}
|
||||
error = nsurl_create(addr, &url);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
NULL,
|
||||
bw,
|
||||
NULL);
|
||||
if (url != NULL) {
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else if (nsoption_bool(new_blank)) {
|
||||
/** @todo what the heck is this for? */
|
||||
GtkWidget *window = gtk_notebook_get_nth_page(g->notebook, -1);
|
||||
nsgtk_widget_override_background_color(window,
|
||||
GTK_STATE_NORMAL,
|
||||
0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -968,11 +997,25 @@ MENUHANDLER(link_openwin)
|
|||
struct gtk_scaffolding *g = (struct gtk_scaffolding *) data;
|
||||
struct gui_window *gui = g->top_level;
|
||||
struct browser_window *bw = nsgtk_get_browser_window(gui);
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (current_menu_ctx.link_url == NULL)
|
||||
return FALSE;
|
||||
|
||||
browser_window_create(current_menu_ctx.link_url, bw, NULL, true, false);
|
||||
error = nsurl_create(current_menu_ctx.link_url, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
bw,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -985,12 +1028,29 @@ MENUHANDLER(link_opentab)
|
|||
struct gtk_scaffolding *g = (struct gtk_scaffolding *) data;
|
||||
struct gui_window *gui = g->top_level;
|
||||
struct browser_window *bw = nsgtk_get_browser_window(gui);
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (current_menu_ctx.link_url == NULL)
|
||||
return FALSE;
|
||||
|
||||
temp_open_background = 1;
|
||||
browser_window_create(current_menu_ctx.link_url, bw, NULL, true, true);
|
||||
|
||||
error = nsurl_create(current_menu_ctx.link_url, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
BROWSER_WINDOW_GO_FLAG_TAB,
|
||||
url,
|
||||
NULL,
|
||||
bw,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
temp_open_background = -1;
|
||||
|
||||
return TRUE;
|
||||
|
|
|
@ -394,11 +394,29 @@ gui_window_save_link(struct gui_window *g, const char *url,
|
|||
static void
|
||||
monkey_window_handle_new(int argc, char **argv)
|
||||
{
|
||||
struct browser_window *bw;
|
||||
nsurl *url = NULL;
|
||||
nserror error = NSERROR_OK;
|
||||
|
||||
if (argc > 3)
|
||||
return;
|
||||
bw = browser_window_create((argc == 3) ? argv[2] : NULL, NULL, NULL, true, false);
|
||||
(void) bw;
|
||||
|
||||
if (argc == 3) {
|
||||
error = nsurl_create(argv[2], &url);
|
||||
}
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
if (url != NULL) {
|
||||
nsurl_unref(url);
|
||||
}
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -705,17 +705,35 @@ void ro_gui_dialog_update_zoom(struct gui_window *g) {
|
|||
|
||||
|
||||
bool ro_gui_dialog_openurl_apply(wimp_w w) {
|
||||
const char *url;
|
||||
const char *urltxt;
|
||||
char *url2;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
url = ro_gui_get_icon_string(w, ICON_OPENURL_URL);
|
||||
url2 = strdup(url);
|
||||
if (url2 != NULL) {
|
||||
browser_window_create(url2, 0, 0, true, false);
|
||||
free(url2);
|
||||
return true;
|
||||
urltxt = ro_gui_get_icon_string(w, ICON_OPENURL_URL);
|
||||
url2 = strdup(urltxt); /** @todo why is this copied */
|
||||
if (url2 == NULL) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
|
||||
error = nsurl_create(url2, &url);
|
||||
free(url2);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
82
riscos/gui.c
82
riscos/gui.c
|
@ -777,8 +777,24 @@ static void gui_init2(int argc, char** argv)
|
|||
}
|
||||
}
|
||||
|
||||
if (open_window)
|
||||
browser_window_create(url, NULL, 0, true, false);
|
||||
if (open_window) {
|
||||
nsurl *urlns;
|
||||
nserror errorns;
|
||||
|
||||
errorns = nsurl_create(yrl, &urlns);
|
||||
if (errorns == NSERROR_OK) {
|
||||
errorns = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
urlns,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(urlns);
|
||||
}
|
||||
if (errorns != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(errorns), 0);
|
||||
}
|
||||
}
|
||||
|
||||
free(url);
|
||||
}
|
||||
|
@ -1498,9 +1514,9 @@ void ro_msg_dataload(wimp_message *message)
|
|||
char *urltxt = NULL;
|
||||
char *title = NULL;
|
||||
struct gui_window *g;
|
||||
os_error *error;
|
||||
os_error *oserror;
|
||||
nsurl *url;
|
||||
nserror nserror;
|
||||
nserror error;
|
||||
|
||||
g = ro_gui_window_lookup(message->data.data_xfer.w);
|
||||
if (g) {
|
||||
|
@ -1556,12 +1572,10 @@ void ro_msg_dataload(wimp_message *message)
|
|||
return;
|
||||
|
||||
|
||||
nserror = nsurl_create(urltxt, &url);
|
||||
if (nserror != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(nserror), 0);
|
||||
} else {
|
||||
error = nsurl_create(urltxt, &url);
|
||||
if (nserror == NSERROR_OK) {
|
||||
if (g) {
|
||||
browser_window_navigate(g->bw,
|
||||
error = browser_window_navigate(g->bw,
|
||||
url,
|
||||
NULL,
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
|
@ -1577,25 +1591,32 @@ void ro_msg_dataload(wimp_message *message)
|
|||
#endif
|
||||
|
||||
} else {
|
||||
browser_window_create(url, NULL, NULL, true, false);
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
}
|
||||
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
free(urltxt);
|
||||
|
||||
/* send DataLoadAck */
|
||||
message->action = message_DATA_LOAD_ACK;
|
||||
message->your_ref = message->my_ref;
|
||||
error = xwimp_send_message(wimp_USER_MESSAGE, message, message->sender);
|
||||
if (error) {
|
||||
oserror = xwimp_send_message(wimp_USER_MESSAGE, message, message->sender);
|
||||
if (oserror) {
|
||||
LOG(("xwimp_send_message: 0x%x: %s",
|
||||
error->errnum, error->errmess));
|
||||
warn_user("WimpError", error->errmess);
|
||||
oserror->errnum, oserror->errmess));
|
||||
warn_user("WimpError", oserror->errmess);
|
||||
return;
|
||||
}
|
||||
|
||||
free(urltxt);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1896,7 +1917,9 @@ void ro_msg_dataopen(wimp_message *message)
|
|||
int file_type = message->data.data_xfer.file_type;
|
||||
char *url = 0;
|
||||
size_t len;
|
||||
os_error *error;
|
||||
os_error *oserror;
|
||||
nsurl *urlns;
|
||||
nserror error;
|
||||
|
||||
if (file_type == 0xb28) /* ANT URL file */
|
||||
url = ro_gui_url_file_parse(message->data.data_xfer.file_name);
|
||||
|
@ -1924,11 +1947,11 @@ void ro_msg_dataopen(wimp_message *message)
|
|||
/* send DataLoadAck */
|
||||
message->action = message_DATA_LOAD_ACK;
|
||||
message->your_ref = message->my_ref;
|
||||
error = xwimp_send_message(wimp_USER_MESSAGE, message, message->sender);
|
||||
if (error) {
|
||||
oserror = xwimp_send_message(wimp_USER_MESSAGE, message, message->sender);
|
||||
if (oserror) {
|
||||
LOG(("xwimp_send_message: 0x%x: %s",
|
||||
error->errnum, error->errmess));
|
||||
warn_user("WimpError", error->errmess);
|
||||
oserror->errnum, oserror->errmess));
|
||||
warn_user("WimpError", oserror->errmess);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -1937,10 +1960,21 @@ void ro_msg_dataopen(wimp_message *message)
|
|||
* functions called above */
|
||||
return;
|
||||
|
||||
/* create a new window with the file */
|
||||
browser_window_create(url, NULL, 0, true, false);
|
||||
|
||||
error = nsurl_create(url, &urlns);
|
||||
free(url);
|
||||
if (error == NSERROR_OK) {
|
||||
/* create a new window with the file */
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
urlns,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(urlns);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -118,15 +118,30 @@ void ro_gui_iconbar_initialise(void)
|
|||
bool ro_gui_iconbar_click(wimp_pointer *pointer)
|
||||
{
|
||||
int key_down = 0;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
switch (pointer->buttons) {
|
||||
case wimp_CLICK_SELECT:
|
||||
if (nsoption_charp(homepage_url) != NULL) {
|
||||
browser_window_create(nsoption_charp(homepage_url),
|
||||
NULL, 0, true, false);
|
||||
error = nsurl_create(nsoption_charp(homepage_url), &url);
|
||||
} else {
|
||||
browser_window_create(NETSURF_HOMEPAGE,
|
||||
NULL, 0, true, false);
|
||||
error = nsurl_create(NETSURF_HOMEPAGE, &url);
|
||||
}
|
||||
|
||||
/* create an initial browser window */
|
||||
error = nsurl_create(addr, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
17
riscos/uri.c
17
riscos/uri.c
|
@ -42,6 +42,8 @@ void ro_uri_message_received(wimp_message *msg)
|
|||
char* uri_requested;
|
||||
int uri_length;
|
||||
nsurl *nsurl;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
uri_handle = uri_message->handle;
|
||||
|
||||
|
@ -69,9 +71,20 @@ void ro_uri_message_received(wimp_message *msg)
|
|||
|
||||
xuri_request_uri(0, uri_requested, uri_length, uri_handle, NULL);
|
||||
|
||||
browser_window_create(uri_requested, NULL, 0, true, false);
|
||||
|
||||
error = nsurl_create(uri_requested, &url);
|
||||
free(uri_requested);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
bool ro_uri_launch(const char *uri)
|
||||
|
|
|
@ -54,6 +54,7 @@ void ro_url_message_received(wimp_message *message)
|
|||
(inetsuite_message_open_url*) &message->data;
|
||||
os_error *error;
|
||||
nsurl *nsurl;
|
||||
nserror errorns;
|
||||
|
||||
/* If the url_message->indirect.tag is non-zero,
|
||||
* then the message data is contained within the message block.
|
||||
|
@ -111,7 +112,7 @@ void ro_url_message_received(wimp_message *message)
|
|||
return;
|
||||
}
|
||||
|
||||
nsurl_unref(nsurl);
|
||||
free(url);
|
||||
|
||||
/* send ack */
|
||||
message->your_ref = message->my_ref;
|
||||
|
@ -124,9 +125,18 @@ void ro_url_message_received(wimp_message *message)
|
|||
}
|
||||
|
||||
/* create new browser window */
|
||||
browser_window_create(url, 0, 0, true, false);
|
||||
errorns = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
nsurl,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
|
||||
free(url);
|
||||
|
||||
nsurl_unref(nsurl);
|
||||
if (errorns != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(errorns), 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
293
riscos/window.c
293
riscos/window.c
|
@ -1909,6 +1909,8 @@ bool ro_gui_window_handle_local_keypress(struct gui_window *g, wimp_key *key,
|
|||
uint32_t c = (uint32_t) key->c;
|
||||
wimp_scroll_direction xscroll = wimp_SCROLL_NONE;
|
||||
wimp_scroll_direction yscroll = wimp_SCROLL_NONE;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (g == NULL)
|
||||
return false;
|
||||
|
@ -1917,11 +1919,22 @@ bool ro_gui_window_handle_local_keypress(struct gui_window *g, wimp_key *key,
|
|||
|
||||
switch (c) {
|
||||
case IS_WIMP_KEY + wimp_KEY_F1: /* Help. */
|
||||
browser_window_create(
|
||||
"http://www.netsurf-browser.org/documentation/",
|
||||
NULL, 0, true, false);
|
||||
{
|
||||
error = nsurl_create("http://www.netsurf-browser.org/documentation/", &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
return true;
|
||||
|
||||
}
|
||||
case IS_WIMP_KEY + wimp_KEY_CONTROL + wimp_KEY_F1:
|
||||
ro_gui_window_action_page_info(g);
|
||||
return true;
|
||||
|
@ -2627,7 +2640,8 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
hlcache_handle *h;
|
||||
struct toolbar *toolbar;
|
||||
wimp_window_state state;
|
||||
os_error *error;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
g = (struct gui_window *) ro_gui_wimp_event_get_user_data(w);
|
||||
toolbar = g->toolbar;
|
||||
|
@ -2650,28 +2664,72 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
|
||||
switch (action) {
|
||||
|
||||
/* help actions */
|
||||
/* help actions */
|
||||
case HELP_OPEN_CONTENTS:
|
||||
browser_window_create(
|
||||
"http://www.netsurf-browser.org/documentation/",
|
||||
NULL, 0, true, false);
|
||||
error = nsurl_create("http://www.netsurf-browser.org/documentation/", &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
break;
|
||||
|
||||
case HELP_OPEN_GUIDE:
|
||||
browser_window_create(
|
||||
"http://www.netsurf-browser.org/documentation/guide",
|
||||
NULL, 0, true, false);
|
||||
error = nsurl_create("http://www.netsurf-browser.org/documentation/guide", &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
break;
|
||||
|
||||
case HELP_OPEN_INFORMATION:
|
||||
browser_window_create(
|
||||
"http://www.netsurf-browser.org/documentation/info",
|
||||
NULL, 0, true, false);
|
||||
error = nsurl_create("http://www.netsurf-browser.org/documentation/info", &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
break;
|
||||
|
||||
case HELP_OPEN_CREDITS:
|
||||
browser_window_create("about:credits", NULL, 0, true, false);
|
||||
error = nsurl_create("about:credits", &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
break;
|
||||
|
||||
case HELP_OPEN_LICENCE:
|
||||
browser_window_create("about:licence", NULL, 0, true, false);
|
||||
error = nsurl_create("about:licence", &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
break;
|
||||
|
||||
case HELP_LAUNCH_INTERACTIVE:
|
||||
if (!ro_gui_interactive_help_available()) {
|
||||
ro_gui_interactive_help_start();
|
||||
|
@ -2681,7 +2739,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
}
|
||||
break;
|
||||
|
||||
/* history actions */
|
||||
/* history actions */
|
||||
case HISTORY_SHOW_LOCAL:
|
||||
ro_gui_window_action_local_history(g);
|
||||
break;
|
||||
|
@ -2689,7 +2747,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
ro_gui_global_history_open();
|
||||
break;
|
||||
|
||||
/* hotlist actions */
|
||||
/* hotlist actions */
|
||||
case HOTLIST_ADD_URL:
|
||||
ro_gui_window_action_add_bookmark(g);
|
||||
break;
|
||||
|
@ -2697,7 +2755,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
ro_gui_hotlist_open();
|
||||
break;
|
||||
|
||||
/* cookies actions */
|
||||
/* cookies actions */
|
||||
case COOKIES_SHOW:
|
||||
ro_gui_cookies_open();
|
||||
break;
|
||||
|
@ -2706,7 +2764,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
cookies_delete_all();
|
||||
break;
|
||||
|
||||
/* page actions */
|
||||
/* page actions */
|
||||
case BROWSER_PAGE_INFO:
|
||||
ro_gui_window_action_page_info(g);
|
||||
break;
|
||||
|
@ -2721,13 +2779,13 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
ro_gui_view_source(h);
|
||||
break;
|
||||
|
||||
/* object actions */
|
||||
/* object actions */
|
||||
case BROWSER_OBJECT_INFO:
|
||||
if (current_menu_object != NULL) {
|
||||
ro_gui_window_prepare_objectinfo(current_menu_object,
|
||||
current_menu_url);
|
||||
current_menu_url);
|
||||
ro_gui_dialog_open_persistent(g->window,
|
||||
dialog_objinfo, false);
|
||||
dialog_objinfo, false);
|
||||
}
|
||||
break;
|
||||
case BROWSER_OBJECT_RELOAD:
|
||||
|
@ -2741,77 +2799,84 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
case BROWSER_LINK_SAVE_URI:
|
||||
if (current_menu_url != NULL) {
|
||||
ro_gui_save_prepare(GUI_SAVE_LINK_URI, NULL, NULL,
|
||||
current_menu_url, NULL);
|
||||
current_menu_url, NULL);
|
||||
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
|
||||
false);
|
||||
false);
|
||||
}
|
||||
break;
|
||||
case BROWSER_LINK_SAVE_URL:
|
||||
if (current_menu_url != NULL) {
|
||||
ro_gui_save_prepare(GUI_SAVE_LINK_URL, NULL, NULL,
|
||||
current_menu_url, NULL);
|
||||
current_menu_url, NULL);
|
||||
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
|
||||
false);
|
||||
false);
|
||||
}
|
||||
break;
|
||||
case BROWSER_LINK_SAVE_TEXT:
|
||||
if (current_menu_url != NULL) {
|
||||
ro_gui_save_prepare(GUI_SAVE_LINK_TEXT, NULL, NULL,
|
||||
current_menu_url, NULL);
|
||||
current_menu_url, NULL);
|
||||
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
|
||||
false);
|
||||
false);
|
||||
}
|
||||
break;
|
||||
|
||||
case BROWSER_LINK_DOWNLOAD:
|
||||
if (current_menu_url != NULL) {
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
error = nsurl_create(current_menu_url, &url);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
browser_window_navigate(bw,
|
||||
url,
|
||||
hlcache_handle_get_url(h),
|
||||
BROWSER_WINDOW_GO_FLAG_DOWNLOAD |
|
||||
BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_navigate(bw,
|
||||
url,
|
||||
hlcache_handle_get_url(h),
|
||||
BROWSER_WINDOW_GO_FLAG_DOWNLOAD |
|
||||
BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case BROWSER_LINK_NEW_WINDOW:
|
||||
if (current_menu_url != NULL)
|
||||
browser_window_create(current_menu_url, bw,
|
||||
nsurl_access(hlcache_handle_get_url(h)),
|
||||
true, false);
|
||||
if (current_menu_url != NULL) {
|
||||
error = nsurl_create(current_menu_url, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
hlcache_handle_get_url(h),
|
||||
bw,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
||||
/* save actions */
|
||||
case BROWSER_OBJECT_SAVE:
|
||||
if (current_menu_object != NULL) {
|
||||
ro_gui_save_prepare(GUI_SAVE_OBJECT_ORIG,
|
||||
current_menu_object, NULL, NULL, NULL);
|
||||
current_menu_object, NULL, NULL, NULL);
|
||||
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
|
||||
false);
|
||||
false);
|
||||
}
|
||||
break;
|
||||
case BROWSER_OBJECT_EXPORT_SPRITE:
|
||||
if (current_menu_object != NULL) {
|
||||
ro_gui_save_prepare(GUI_SAVE_OBJECT_NATIVE,
|
||||
current_menu_object, NULL, NULL, NULL);
|
||||
current_menu_object, NULL, NULL, NULL);
|
||||
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
|
||||
false);
|
||||
false);
|
||||
}
|
||||
break;
|
||||
case BROWSER_OBJECT_EXPORT_DRAW:
|
||||
if (current_menu_object != NULL) {
|
||||
ro_gui_save_prepare(GUI_SAVE_OBJECT_NATIVE,
|
||||
current_menu_object, NULL, NULL, NULL);
|
||||
current_menu_object, NULL, NULL, NULL);
|
||||
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
|
||||
false);
|
||||
false);
|
||||
}
|
||||
break;
|
||||
case BROWSER_SAVE:
|
||||
|
@ -2839,14 +2904,14 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
ro_gui_window_action_save(g, GUI_SAVE_LINK_TEXT);
|
||||
break;
|
||||
|
||||
/* selection actions */
|
||||
/* selection actions */
|
||||
case BROWSER_SELECTION_SAVE:
|
||||
if (h != NULL) {
|
||||
ro_gui_save_prepare(GUI_SAVE_TEXT_SELECTION, NULL,
|
||||
browser_window_get_selection(bw),
|
||||
NULL, NULL);
|
||||
browser_window_get_selection(bw),
|
||||
NULL, NULL);
|
||||
ro_gui_dialog_open_persistent(g->window, dialog_saveas,
|
||||
false);
|
||||
false);
|
||||
}
|
||||
break;
|
||||
case BROWSER_SELECTION_COPY:
|
||||
|
@ -2865,7 +2930,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
browser_window_key_press(bw, KEY_CLEAR_SELECTION);
|
||||
break;
|
||||
|
||||
/* navigation actions */
|
||||
/* navigation actions */
|
||||
case BROWSER_NAVIGATE_HOME:
|
||||
ro_gui_window_action_home(g);
|
||||
break;
|
||||
|
@ -2880,7 +2945,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
case BROWSER_NAVIGATE_UP:
|
||||
if (bw != NULL && h != NULL)
|
||||
ro_gui_window_navigate_up(bw->window,
|
||||
nsurl_access(hlcache_handle_get_url(h)));
|
||||
nsurl_access(hlcache_handle_get_url(h)));
|
||||
break;
|
||||
case BROWSER_NAVIGATE_RELOAD_ALL:
|
||||
if (bw != NULL)
|
||||
|
@ -2891,7 +2956,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
browser_window_stop(bw);
|
||||
break;
|
||||
|
||||
/* browser window/display actions */
|
||||
/* browser window/display actions */
|
||||
case BROWSER_SCALE_VIEW:
|
||||
ro_gui_window_action_zoom(g);
|
||||
break;
|
||||
|
@ -2911,11 +2976,11 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
case BROWSER_BUFFER_ANIMS:
|
||||
if (g != NULL)
|
||||
g->option.buffer_animations =
|
||||
!g->option.buffer_animations;
|
||||
!g->option.buffer_animations;
|
||||
break;
|
||||
case BROWSER_BUFFER_ALL:
|
||||
if (g != NULL)
|
||||
g->option.buffer_everything =
|
||||
g->option.buffer_everything =
|
||||
!g->option.buffer_everything;
|
||||
break;
|
||||
case BROWSER_SAVE_VIEW:
|
||||
|
@ -2926,31 +2991,35 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
break;
|
||||
case BROWSER_WINDOW_DEFAULT:
|
||||
if (g != NULL) {
|
||||
os_error *oserror;
|
||||
|
||||
ro_gui_screen_size(&nsoption_int(window_screen_width),
|
||||
&nsoption_int(window_screen_height));
|
||||
state.w = w;
|
||||
error = xwimp_get_window_state(&state);
|
||||
if (error) {
|
||||
oserror = xwimp_get_window_state(&state);
|
||||
if (oserror) {
|
||||
LOG(("xwimp_get_window_state: 0x%x: %s",
|
||||
error->errnum,
|
||||
error->errmess));
|
||||
warn_user("WimpError", error->errmess);
|
||||
oserror->errnum,
|
||||
oserror->errmess));
|
||||
warn_user("WimpError", oserror->errmess);
|
||||
}
|
||||
nsoption_set_int(window_x, state.visible.x0);
|
||||
nsoption_set_int(window_y, state.visible.y0);
|
||||
nsoption_set_int(window_width,
|
||||
state.visible.x1 - state.visible.x0);
|
||||
state.visible.x1 - state.visible.x0);
|
||||
nsoption_set_int(window_height,
|
||||
state.visible.y1 - state.visible.y0);
|
||||
state.visible.y1 - state.visible.y0);
|
||||
ro_gui_save_options();
|
||||
}
|
||||
break;
|
||||
case BROWSER_WINDOW_STAGGER:
|
||||
nsoption_set_bool(window_stagger, !nsoption_bool(window_stagger));
|
||||
nsoption_set_bool(window_stagger,
|
||||
!nsoption_bool(window_stagger));
|
||||
ro_gui_save_options();
|
||||
break;
|
||||
case BROWSER_WINDOW_COPY:
|
||||
nsoption_set_bool(window_size_clone, !nsoption_bool(window_size_clone));
|
||||
nsoption_set_bool(window_size_clone,
|
||||
!nsoption_bool(window_size_clone));
|
||||
ro_gui_save_options();
|
||||
break;
|
||||
case BROWSER_WINDOW_RESET:
|
||||
|
@ -2959,7 +3028,7 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
ro_gui_save_options();
|
||||
break;
|
||||
|
||||
/* toolbar actions */
|
||||
/* toolbar actions */
|
||||
case TOOLBAR_BUTTONS:
|
||||
assert(toolbar);
|
||||
ro_toolbar_set_display_buttons(toolbar,
|
||||
|
@ -2986,6 +3055,10 @@ bool ro_gui_window_menu_select(wimp_w w, wimp_i i, wimp_menu *menu,
|
|||
return false;
|
||||
}
|
||||
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -3607,13 +3680,23 @@ void ro_gui_window_toolbar_click(void *data,
|
|||
case TOOLBAR_BUTTON_UP_NEW:
|
||||
if (g->bw && g->bw->current_content) {
|
||||
hlcache_handle *h = g->bw->current_content;
|
||||
new_bw = browser_window_create(NULL,
|
||||
g->bw, NULL, false,
|
||||
false);
|
||||
/* do it without loading the content
|
||||
* into the new window */
|
||||
ro_gui_window_navigate_up(new_bw->window,
|
||||
nserror error;
|
||||
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
NULL,
|
||||
NULL,
|
||||
g->bw,
|
||||
&new_bw);
|
||||
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
/* do it without loading the content
|
||||
* into the new window
|
||||
*/
|
||||
ro_gui_window_navigate_up(new_bw->window,
|
||||
nsurl_access(hlcache_handle_get_url(h)));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
|
@ -3954,10 +4037,8 @@ void ro_gui_window_action_home(struct gui_window *g)
|
|||
}
|
||||
|
||||
error = nsurl_create(addr, &url);
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
browser_window_navigate(g->bw,
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_navigate(g->bw,
|
||||
url,
|
||||
NULL,
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY |
|
||||
|
@ -3967,7 +4048,9 @@ void ro_gui_window_action_home(struct gui_window *g)
|
|||
NULL);
|
||||
nsurl_unref(url);
|
||||
}
|
||||
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -3979,15 +4062,23 @@ void ro_gui_window_action_home(struct gui_window *g)
|
|||
|
||||
void ro_gui_window_action_navigate_back_new(struct gui_window *g)
|
||||
{
|
||||
struct browser_window *new_bw;
|
||||
struct browser_window *new_bw;
|
||||
nserror error;
|
||||
|
||||
if (g == NULL || g->bw == NULL)
|
||||
return;
|
||||
|
||||
new_bw = browser_window_create(NULL, g->bw, NULL, false, false);
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
NULL,
|
||||
NULL,
|
||||
g->bw,
|
||||
&new_bw);
|
||||
|
||||
if (new_bw != NULL && new_bw->history != NULL)
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
history_back(new_bw, new_bw->history);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -3999,15 +4090,23 @@ void ro_gui_window_action_navigate_back_new(struct gui_window *g)
|
|||
|
||||
void ro_gui_window_action_navigate_forward_new(struct gui_window *g)
|
||||
{
|
||||
struct browser_window *new_bw;
|
||||
struct browser_window *new_bw;
|
||||
nserror error;
|
||||
|
||||
if (g == NULL || g->bw == NULL)
|
||||
return;
|
||||
|
||||
new_bw = browser_window_create(NULL, g->bw, NULL, false, false);
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
NULL,
|
||||
NULL,
|
||||
g->bw,
|
||||
&new_bw);
|
||||
|
||||
if (new_bw != NULL && new_bw->history != NULL)
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
history_forward(new_bw, new_bw->history);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -4019,12 +4118,20 @@ void ro_gui_window_action_navigate_forward_new(struct gui_window *g)
|
|||
|
||||
void ro_gui_window_action_new_window(struct gui_window *g)
|
||||
{
|
||||
nserror error;
|
||||
|
||||
if (g == NULL || g->bw == NULL || g->bw->current_content == NULL)
|
||||
return;
|
||||
|
||||
browser_window_create(nsurl_access(
|
||||
hlcache_handle_get_url(g->bw->current_content)), g->bw,
|
||||
0, false, false);
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
hlcache_handle_get_url(g->bw->current_content),
|
||||
NULL,
|
||||
g->bw,
|
||||
NULL);
|
||||
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -744,7 +744,11 @@ nsws_window_command(HWND hwnd,
|
|||
break;
|
||||
|
||||
case IDM_FILE_OPEN_WINDOW:
|
||||
browser_window_create(NULL, gw->bw, NULL, false, false);
|
||||
browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE,
|
||||
NULL,
|
||||
NULL,
|
||||
gw->bw,
|
||||
NULL);
|
||||
break;
|
||||
|
||||
case IDM_FILE_CLOSE_WINDOW:
|
||||
|
|
|
@ -100,8 +100,9 @@ WinMain(HINSTANCE hInstance, HINSTANCE hLastInstance, LPSTR lpcli, int ncmd)
|
|||
LPWSTR *argvw;
|
||||
char *messages;
|
||||
nserror ret;
|
||||
struct browser_window *bw;
|
||||
const char *addr = NETSURF_HOMEPAGE;
|
||||
const char *addr;
|
||||
nsurl *url;
|
||||
nserror error;
|
||||
|
||||
if (SLEN(lpcli) > 0) {
|
||||
argvw = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||
|
@ -150,14 +151,30 @@ WinMain(HINSTANCE hInstance, HINSTANCE hLastInstance, LPSTR lpcli, int ncmd)
|
|||
/* If there is a url specified on the command line use it */
|
||||
if (argc > 1) {
|
||||
addr = argv[1];
|
||||
} else {
|
||||
} else if (nsoption_charp(homepage_url) != NULL) {
|
||||
addr = nsoption_charp(homepage_url);
|
||||
} else {
|
||||
addr = NETSURF_HOMEPAGE;
|
||||
}
|
||||
|
||||
LOG(("calling browser_window_create"));
|
||||
bw = browser_window_create(addr, 0, 0, true, false);
|
||||
|
||||
netsurf_main_loop();
|
||||
error = nsurl_create(addr, &url);
|
||||
if (error == NSERROR_OK) {
|
||||
error = browser_window_create(BROWSER_WINDOW_GO_FLAG_VERIFIABLE |
|
||||
BROWSER_WINDOW_GO_FLAG_HISTORY,
|
||||
url,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
nsurl_unref(url);
|
||||
|
||||
}
|
||||
if (error != NSERROR_OK) {
|
||||
warn_user(messages_get_errorcode(error), 0);
|
||||
} else {
|
||||
netsurf_main_loop();
|
||||
}
|
||||
|
||||
netsurf_exit();
|
||||
|
||||
|
|
Loading…
Reference in New Issue