From 0966b8097ccd89c65989b76e4a960e7ecb788892 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Sun, 16 Nov 2014 16:40:41 +0000 Subject: Allocate screen title when first needed and keep it private to amiga/gui.c --- amiga/context_menu.c | 1 - amiga/download.c | 2 +- amiga/font_scan.c | 2 +- amiga/gui.c | 21 +++++++++++++++------ amiga/gui.h | 8 +++++++- amiga/gui_options.c | 2 +- amiga/history_local.c | 4 ++-- amiga/login.c | 2 +- amiga/print.c | 4 ++-- amiga/search.c | 2 +- amiga/tree.c | 4 ++-- 11 files changed, 33 insertions(+), 19 deletions(-) diff --git a/amiga/context_menu.c b/amiga/context_menu.c index 88156203a..df16a0fd7 100644 --- a/amiga/context_menu.c +++ b/amiga/context_menu.c @@ -223,7 +223,6 @@ static void ami_context_menu_add_submenu(Object *ctxmenuobj, ULONG cmsub, void * * CMID_SELECTFILE - userdata = ami_file_input_menu_data * */ - struct browser_window *bw = NULL; struct gui_window *gw = NULL; switch(cmsub) diff --git a/amiga/download.c b/amiga/download.c index 47ca18c63..1c49629e7 100644 --- a/amiga/download.c +++ b/amiga/download.c @@ -148,7 +148,7 @@ static struct gui_download_window *gui_download_window_create(download_context * } dw->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle,nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, dw->url, WA_Activate, TRUE, WA_DepthGadget, TRUE, diff --git a/amiga/font_scan.c b/amiga/font_scan.c index 43bdb8ea9..f39fcac2f 100644 --- a/amiga/font_scan.c +++ b/amiga/font_scan.c @@ -101,7 +101,7 @@ static struct ami_font_scan_window *ami_font_scan_gui_open(int32 fonts) fsw->glyphtext = ami_utf8_easy(messages_get("FontGlyphs")); fsw->objects[FS_OID_MAIN] = WindowObject, - WA_ScreenTitle, nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, fsw->title, WA_Activate, TRUE, WA_DepthGadget, TRUE, diff --git a/amiga/gui.c b/amiga/gui.c index 680b83624..dd4daafac 100644 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -175,6 +175,7 @@ static int screen_signal = -1; static ULONG sz_gad_width = 0; static ULONG sz_gad_height = 0; static bool win_destroyed; +static STRPTR nsscreentitle; static struct MsgPort *applibport = NULL; static ULONG applibsig = 0; @@ -473,6 +474,15 @@ colour_option_from_pen(UWORD pen, return NSERROR_OK; } +/* exported interface documented in amiga/gui.h */ +STRPTR ami_gui_get_screen_title(void) +{ + if(nsscreentitle == NULL) + nsscreentitle = ASPrintf("NetSurf %s", netsurf_version); + + return nsscreentitle; +} + static void ami_set_screen_defaults(struct Screen *screen) { nsoption_default_set_int(window_x, 0); @@ -702,7 +712,7 @@ static void ami_openscreen(void) LOG(("Screen signal %d", screen_signal)); scrn = OpenScreenTags(NULL, SA_DisplayID, id, - SA_Title, nsscreentitle, + SA_Title, ami_gui_get_screen_title(), SA_Type, PUBLICSCREEN, SA_PubName, "NetSurf", SA_PubSig, screen_signal, @@ -2971,7 +2981,7 @@ static void gui_quit(void) LOG(("Closing screen")); ami_gui_close_screen(scrn, locked_screen, FALSE); - FreeVec(nsscreentitle); + if(nsscreentitle) FreeVec(nsscreentitle); LOG(("Freeing menu items")); ami_context_menu_free(); @@ -3643,7 +3653,7 @@ gui_window_create(struct browser_window *bw, } g->shared->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle,nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Activate, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, @@ -3856,7 +3866,7 @@ gui_window_create(struct browser_window *bw, g->tab_node = NULL; g->shared->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle,nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Activate, TRUE, WA_DepthGadget, FALSE, WA_DragBar, FALSE, @@ -4170,7 +4180,7 @@ static void gui_window_set_title(struct gui_window *g, const char *title) { if(g->shared->wintitle) free(g->shared->wintitle); g->shared->wintitle = strdup(utf8title); - SetWindowTitles(g->shared->win, g->shared->wintitle, nsscreentitle); + SetWindowTitles(g->shared->win, g->shared->wintitle, ami_gui_get_screen_title()); } } } @@ -5399,7 +5409,6 @@ int main(int argc, char** argv) ami_init_mouse_pointers(); win_destroyed = false; - nsscreentitle = ASPrintf("NetSurf %s",netsurf_version); ami_font_setdevicedpi(0); /* for early font requests, eg treeview init */ window_list = NewObjList(); diff --git a/amiga/gui.h b/amiga/gui.h index c20f76434..af2d65937 100755 --- a/amiga/gui.h +++ b/amiga/gui.h @@ -195,9 +195,15 @@ void ami_gui_free_space_box(struct IBox *bbox); */ uint32 ami_gui_get_app_id(void); +/** + * Get the string for NetSurf's screen titlebar. + * + * @return String to use as the screen's titlebar text. + */ +STRPTR ami_gui_get_screen_title(void); + struct MinList *window_list; struct Screen *scrn; -STRPTR nsscreentitle; struct MsgPort *sport; struct gui_window *cur_gw; struct gui_globals browserglob; diff --git a/amiga/gui_options.c b/amiga/gui_options.c index 8eb18f352..62b54773f 100755 --- a/amiga/gui_options.c +++ b/amiga/gui_options.c @@ -529,7 +529,7 @@ void ami_gui_opts_open(void) gow = AllocVecTags(sizeof(struct ami_gui_opts_window), AVT_ClearWithValue, 0, TAG_DONE); gow->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle,nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, gadlab[LAB_OPTS_WINTITLE], WA_Activate, TRUE, WA_DepthGadget, TRUE, diff --git a/amiga/history_local.c b/amiga/history_local.c index 8c95122d1..069d8b665 100755 --- a/amiga/history_local.c +++ b/amiga/history_local.c @@ -117,8 +117,8 @@ void ami_history_open(struct gui_window *gw, struct history *history) gw->hw->scrollerhook.h_Data = gw->hw; gw->hw->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle,nsscreentitle, - WA_Title,messages_get("History"), + WA_ScreenTitle, ami_gui_get_screen_title(), + WA_Title, messages_get("History"), WA_Activate, TRUE, WA_DepthGadget, TRUE, WA_DragBar, TRUE, diff --git a/amiga/login.c b/amiga/login.c index f7521c040..e9e221bbc 100755 --- a/amiga/login.c +++ b/amiga/login.c @@ -94,7 +94,7 @@ void gui_401login_open(nsurl *url, const char *realm, } lw->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle,nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, nsurl_access(lw->url), WA_Activate, TRUE, WA_DepthGadget, TRUE, diff --git a/amiga/print.c b/amiga/print.c index 77ecccc78..862e598c7 100644 --- a/amiga/print.c +++ b/amiga/print.c @@ -241,7 +241,7 @@ void ami_print_ui(struct hlcache_handle *c) ami_print_ui_setup(); pw->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle, nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, gadlab[PGID_PRINT], WA_Activate, TRUE, WA_DepthGadget, TRUE, @@ -531,7 +531,7 @@ bool ami_print_dump(void) void ami_print_progress(void) { ami_print_info.objects[OID_MAIN] = WindowObject, - WA_ScreenTitle,nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, messages_get("Printing"), WA_Activate, TRUE, WA_DepthGadget, TRUE, diff --git a/amiga/search.c b/amiga/search.c index 865159fed..ac061cbc3 100755 --- a/amiga/search.c +++ b/amiga/search.c @@ -106,7 +106,7 @@ void ami_search_open(struct gui_window *gwin) fwin = AllocVecTags(sizeof(struct find_window), AVT_ClearWithValue, 0, TAG_DONE); fwin->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle,nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title,messages_get("FindTextNS"), WA_Activate, TRUE, WA_DepthGadget, TRUE, diff --git a/amiga/tree.c b/amiga/tree.c index fc07f0073..75ba123ad 100644 --- a/amiga/tree.c +++ b/amiga/tree.c @@ -732,7 +732,7 @@ void ami_tree_open(struct treeview_window *twin,int type) if(type == AMI_TREE_SSLCERT) { twin->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle, nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, twin->wintitle, WA_Activate, TRUE, WA_DepthGadget, TRUE, @@ -810,7 +810,7 @@ void ami_tree_open(struct treeview_window *twin,int type) } twin->objects[OID_MAIN] = WindowObject, - WA_ScreenTitle,nsscreentitle, + WA_ScreenTitle, ami_gui_get_screen_title(), WA_Title, twin->wintitle, WA_Activate, TRUE, WA_DepthGadget, TRUE, -- cgit v1.2.3