diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2009-09-28 22:17:09 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2009-09-28 22:17:09 +0000 |
commit | cf1d7964919ec43083fd149b33904dca84d0737c (patch) | |
tree | e5490c483e306e8d3c5c811ab901b8739a587243 /amiga/gui.c | |
parent | abf51104fec5c63ac0da35e6d357bdef4104e180 (diff) | |
download | netsurf-cf1d7964919ec43083fd149b33904dca84d0737c.tar.gz netsurf-cf1d7964919ec43083fd149b33904dca84d0737c.tar.bz2 |
Added application.library messages New Doc and Open Doc.
Added option_startup_no_window to allow NetSurf to be opened without an initial
browser window (unless a URL is specified on the command line or by extended
selection)
Provision for option_close_no_quit for NetSurf to stay in memory when all browser
windows are closed (not implemented yet)
svn path=/trunk/netsurf/; revision=9600
Diffstat (limited to 'amiga/gui.c')
-rwxr-xr-x | amiga/gui.c | 114 |
1 files changed, 80 insertions, 34 deletions
diff --git a/amiga/gui.c b/amiga/gui.c index fa7043a4e..61a4e3f08 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -596,6 +596,12 @@ void ami_openscreen(void) dri = GetScreenDrawInfo(scrn); } +void ami_openscreenfirst(void) +{ + ami_openscreen(); + ami_init_layers(&browserglob, 0, 0); +} + void gui_init2(int argc, char** argv) { struct browser_window *bw = NULL; @@ -614,11 +620,8 @@ void gui_init2(int argc, char** argv) ami_fetch_file_register(); ami_openurl_open(); - if(notalreadyrunning) - { - ami_openscreen(); - ami_init_layers(&browserglob, 0, 0); - } + if(notalreadyrunning && (option_startup_no_window == false)) + ami_openscreenfirst(); if(argc) // argc==0 is started from wb { @@ -696,22 +699,36 @@ void gui_init2(int argc, char** argv) if(IApplication) { - ami_appid = RegisterApplication(messages_get("NetSurf"), - REGAPP_URLIdentifier, "netsurf-browser.org", - REGAPP_WBStartup, (struct WBStartup *)argv, -// REGAPP_NoIcon, TRUE, -// REGAPP_AppIconInfo,(ULONG)&aii, - REGAPP_HasPrefsWindow,TRUE, - REGAPP_UniqueApplication,TRUE, - TAG_DONE); + if(argc == 0) + { + ami_appid = RegisterApplication(messages_get("NetSurf"), + REGAPP_URLIdentifier, "netsurf-browser.org", + REGAPP_WBStartup, (struct WBStartup *)argv, +// REGAPP_NoIcon, TRUE, + REGAPP_HasPrefsWindow, TRUE, + REGAPP_CanCreateNewDocs, TRUE, + REGAPP_UniqueApplication, TRUE, + TAG_DONE); + } + else + { +/* TODO: Specify icon when run from Shell */ + ami_appid = RegisterApplication(messages_get("NetSurf"), + REGAPP_URLIdentifier, "netsurf-browser.org", + REGAPP_FileName, argv[0], + REGAPP_NoIcon, TRUE, + REGAPP_HasPrefsWindow, TRUE, + REGAPP_CanCreateNewDocs, TRUE, + REGAPP_UniqueApplication, TRUE, + TAG_DONE); + } GetApplicationAttrs(ami_appid, APPATTR_Port, (ULONG)&applibport, TAG_DONE); applibsig = (1L << applibport->mp_SigBit); } - if(!bw) bw = browser_window_create(option_homepage_url, 0, 0, true,false); - - if(locked_screen) UnlockPubScreen(NULL,scrn); + if(!bw && (option_startup_no_window == false)) + bw = browser_window_create(option_homepage_url, 0, 0, true,false); } void ami_update_quals(struct gui_window_2 *gwin) @@ -1436,15 +1453,38 @@ void ami_handle_appmsg(void) void ami_handle_applib(void) { struct ApplicationMsg *applibmsg; + struct browser_window *bw; while((applibmsg=(struct ApplicationMsg *)GetMsg(applibport))) { switch (applibmsg->type) { + case APPLIBMT_NewBlankDoc: + bw = browser_window_create(option_homepage_url, 0, 0, true, false); + break; + + case APPLIBMT_OpenDoc: + { + struct ApplicationOpenPrintDocMsg *applibopdmsg = applibmsg; + char *tempurl; + + tempurl = path_to_url(applibopdmsg->fileName); + bw = browser_window_create(tempurl, 0, 0, true, false); + free(tempurl); + } + break; + case APPLIBMT_ToFront: - ScreenToFront(scrn); - WindowToFront(curbw->window->shared->win); - ActivateWindow(curbw->window->shared->win); + if(curbw) + { + ScreenToFront(scrn); + WindowToFront(curbw->window->shared->win); + ActivateWindow(curbw->window->shared->win); + } + else + { + bw = browser_window_create(option_homepage_url, 0, 0, true, false); + } break; case APPLIBMT_OpenPrefs: @@ -1583,26 +1623,29 @@ void ami_quit_netsurf(void) struct nsObject *nnode; struct gui_window_2 *gwin; - node = (struct nsObject *)GetHead((struct List *)window_list); - - do + if(!IsMinListEmpty(window_list)) { - nnode=(struct nsObject *)GetSucc((struct Node *)node); - gwin = node->objstruct; + node = (struct nsObject *)GetHead((struct List *)window_list); - switch(node->Type) + do { - case AMINS_TVWINDOW: - ami_tree_close((struct treeview_window *)gwin); - break; + nnode=(struct nsObject *)GetSucc((struct Node *)node); + gwin = node->objstruct; - case AMINS_WINDOW: - ami_close_all_tabs(gwin); - break; - } + switch(node->Type) + { + case AMINS_TVWINDOW: + ami_tree_close((struct treeview_window *)gwin); + break; - node = nnode; - } while(node = nnode); + case AMINS_WINDOW: + ami_close_all_tabs(gwin); + break; + } + node = nnode; + + } while(node = nnode); + } if(IsMinListEmpty(window_list)) { @@ -1781,6 +1824,8 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, if((bw->browser_window_type == BROWSER_WINDOW_IFRAME) && option_no_iframes) return NULL; + if(!scrn) ami_openscreenfirst(); + if(option_kiosk_mode) new_tab = false; bw->scale = 1.0; @@ -2283,6 +2328,7 @@ struct gui_window *gui_create_browser_window(struct browser_window *bw, glob = &browserglob; + if(locked_screen) UnlockPubScreen(NULL,scrn); return gwin; } |