diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2012-12-08 18:08:00 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2012-12-08 18:08:00 +0000 |
commit | dfa287767fee79f479b4cf0d8d69431febc5e934 (patch) | |
tree | d1d97bcf317d7c7393afbf07915f213d54504712 /amiga | |
parent | ff333828b70a5d31b9efe1c7b2df3216478722a3 (diff) | |
download | netsurf-dfa287767fee79f479b4cf0d8d69431febc5e934.tar.gz netsurf-dfa287767fee79f479b4cf0d8d69431febc5e934.tar.bz2 |
Warn the user and give them an option to stop NetSurf shutting down, if the TCP/IP stack has signalled that it is about to exit.
Diffstat (limited to 'amiga')
-rwxr-xr-x | amiga/gui.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/amiga/gui.c b/amiga/gui.c index 66aca159e..1d523e65b 100755 --- a/amiga/gui.c +++ b/amiga/gui.c @@ -177,6 +177,7 @@ void ami_get_vscroll_pos(struct gui_window_2 *gwin, ULONG *ys); ULONG ami_set_border_gadget_balance(struct gui_window_2 *gwin); ULONG ami_get_border_gadget_balance(struct gui_window_2 *gwin, ULONG *size1, ULONG *size2); void ami_try_quit(void); +void ami_quit_netsurf_delayed(void); Object *ami_gui_splash_open(void); void ami_gui_splash_close(Object *win_obj); static uint32 ami_set_search_ico_render_hook(struct Hook *hook, APTR space, @@ -2148,7 +2149,7 @@ printf("sig recvd %ld (%ld %ld %ld %ld %ld %ld)\n", signal, winsignal , appsig , if(signal & ctrlcsig) { - ami_quit_netsurf(); + ami_quit_netsurf_delayed(); } } @@ -2308,6 +2309,30 @@ void ami_quit_netsurf(void) } } +void ami_quit_netsurf_delayed(void) +{ + char *utf8text = ami_utf8_easy(messages_get("TCPIPShutdown")); + char *utf8gadgets = ami_utf8_easy(messages_get("AbortShutdown")); + + DisplayBeep(NULL); + + int32 res = TimedDosRequesterTags(TDR_ImageType, TDRIMAGE_INFO, + TDR_TitleString, messages_get("NetSurf"), + TDR_FormatString, utf8text, + TDR_GadgetString, utf8gadgets, + TDR_Timeout, 5, + TDR_Inactive, TRUE, + TAG_DONE); + + free(utf8text); + free(utf8gadgets); + + if(res == -1) { /* Requester timed out */ + nsoption_set_bool(tab_close_warn, false); + ami_quit_netsurf(); + } +} + void ami_gui_close_screen(struct Screen *scrn) { if(scrn == NULL) return; |