r9600 chris_y - in /trunk/netsurf/amiga: arexx.c gui.c options.h

netsurf at semichrome.net netsurf at semichrome.net
Mon Sep 28 23:17:10 BST 2009


Author: chris_y
Date: Mon Sep 28 17:17:09 2009
New Revision: 9600

URL: http://source.netsurf-browser.org?rev=9600&view=rev
Log:
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)

Modified:
    trunk/netsurf/amiga/arexx.c
    trunk/netsurf/amiga/gui.c
    trunk/netsurf/amiga/options.h

Modified: trunk/netsurf/amiga/arexx.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/arexx.c?rev=9600&r1=9599&r2=9600&view=diff
==============================================================================
--- trunk/netsurf/amiga/arexx.c (original)
+++ trunk/netsurf/amiga/arexx.c Mon Sep 28 17:17:09 2009
@@ -134,13 +134,23 @@
 	}
 	else
 	{
-		browser_window_go(curbw,(char *)cmd->ac_ArgList[0],NULL,true);
+		if(curbw)
+		{
+			browser_window_go(curbw,(char *)cmd->ac_ArgList[0],NULL,true);
+		}
+		else
+		{
+			browser_window_create((char *)cmd->ac_ArgList[0],NULL,NULL,true,false);
+		}
 	}
 }
 
 STATIC VOID rx_save(struct ARexxCmd *cmd, struct RexxMsg *rxm __attribute__((unused)))
 {
 	BPTR fh = 0;
+
+	if(!curbw) return;
+
 	ami_update_pointer(curbw->window->shared->win,GUI_POINTER_WAIT);
 	if(fh = FOpen(cmd->ac_ArgList[0],MODE_NEWFILE,0))
 	{

Modified: trunk/netsurf/amiga/gui.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/gui.c?rev=9600&r1=9599&r2=9600&view=diff
==============================================================================
--- trunk/netsurf/amiga/gui.c (original)
+++ trunk/netsurf/amiga/gui.c Mon Sep 28 17:17:09 2009
@@ -596,6 +596,12 @@
 	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 @@
 	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 @@
 
 	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_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 @@
 	struct nsObject *nnode;
 	struct gui_window_2 *gwin;
 
-	node = (struct nsObject *)GetHead((struct List *)window_list);
-
-	do
-	{
-		nnode=(struct nsObject *)GetSucc((struct Node *)node);
-		gwin = node->objstruct;
-
-		switch(node->Type)
-		{
-			case AMINS_TVWINDOW:
-				ami_tree_close((struct treeview_window *)gwin);
-			break;
-
-			case AMINS_WINDOW:
-				ami_close_all_tabs(gwin);				
-			break;
-		}
-
-		node = nnode;
-	} while(node = nnode);
+	if(!IsMinListEmpty(window_list))
+	{
+		node = (struct nsObject *)GetHead((struct List *)window_list);
+
+		do
+		{
+			nnode=(struct nsObject *)GetSucc((struct Node *)node);
+			gwin = node->objstruct;
+
+			switch(node->Type)
+			{
+				case AMINS_TVWINDOW:
+					ami_tree_close((struct treeview_window *)gwin);
+				break;
+
+				case AMINS_WINDOW:
+					ami_close_all_tabs(gwin);				
+				break;
+			}
+			node = nnode;
+
+		} while(node = nnode);
+	}
 
 	if(IsMinListEmpty(window_list))
 	{
@@ -1780,6 +1823,8 @@
 	char tabthrobber[100];
 
 	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 @@
 
 	glob = &browserglob;
 
+	if(locked_screen) UnlockPubScreen(NULL,scrn);
 	return gwin;
 }
 

Modified: trunk/netsurf/amiga/options.h
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/options.h?rev=9600&r1=9599&r2=9600&view=diff
==============================================================================
--- trunk/netsurf/amiga/options.h (original)
+++ trunk/netsurf/amiga/options.h Mon Sep 28 17:17:09 2009
@@ -42,6 +42,8 @@
 extern bool option_scale_quality;
 extern bool option_ask_overwrite;
 extern int option_printer_unit;
+extern bool option_startup_no_window;
+extern bool option_close_no_quit;
 
 #define EXTRA_OPTION_DEFINE \
 bool option_verbose_log = false; \
@@ -66,6 +68,8 @@
 bool option_scale_quality = false; \
 bool option_ask_overwrite = false; \
 int option_printer_unit = 0; \
+bool option_startup_no_window = false; \
+bool option_close_no_quit = false; \
 
 #define EXTRA_OPTION_TABLE \
 { "verbose_log",	OPTION_BOOL,	&option_verbose_log}, \
@@ -89,6 +93,8 @@
 { "faster_scroll",	OPTION_BOOL,	&option_faster_scroll}, \
 { "scale_quality",	OPTION_BOOL,	&option_scale_quality}, \
 { "ask_overwrite",	OPTION_BOOL,	&option_ask_overwrite}, \
-{ "printer_unit",	OPTION_INTEGER,	&option_printer_unit},
+{ "printer_unit",	OPTION_INTEGER,	&option_printer_unit}, \
+{ "startup_no_window",	OPTION_BOOL,	&option_startup_no_window}, \
+{ "close_no_quit",	OPTION_BOOL,	&option_close_no_quit}, 
 
 #endif




More information about the netsurf-commits mailing list