summaryrefslogtreecommitdiff
path: root/amiga
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2012-12-08 18:08:00 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2012-12-08 18:08:00 +0000
commitdfa287767fee79f479b4cf0d8d69431febc5e934 (patch)
treed1d97bcf317d7c7393afbf07915f213d54504712 /amiga
parentff333828b70a5d31b9efe1c7b2df3216478722a3 (diff)
downloadnetsurf-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-xamiga/gui.c27
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;