X-Git-Url: https://git.distorted.org.uk/~mdw/sgt/putty/blobdiff_plain/0f9156194d42033ea53cf6242cf6f33e78159532..7fcdebd3060d3ff2f7f5e366f3a7167beb4da9ba:/config.c diff --git a/config.c b/config.c index 54880318..58881ca3 100644 --- a/config.c +++ b/config.c @@ -162,7 +162,7 @@ static void codepage_handler(union control *ctrl, void *dlg, Config *cfg = (Config *)data; if (event == EVENT_REFRESH) { int i; - char *cp; + const char *cp; dlg_update_start(ctrl, dlg); strcpy(cfg->line_codepage, cp_name(decode_codepage(cfg->line_codepage))); @@ -256,8 +256,12 @@ static void sessionsaver_handler(union control *ctrl, void *dlg, * allocate space to store the current contents of the saved * session edit box (since it must persist even when we switch * panels, but is not part of the Config). + * + * Of course, this doesn't need to be done mid-session. */ - if (!dlg_get_privdata(ssd->editbox, dlg)) { + if (!ssd->editbox) { + savedsession = NULL; + } else if (!dlg_get_privdata(ssd->editbox, dlg)) { savedsession = (char *) dlg_alloc_privdata(ssd->editbox, dlg, SAVEDSESSION_LEN); savedsession[0] = '\0'; @@ -333,6 +337,11 @@ static void sessionsaver_handler(union control *ctrl, void *dlg, dlg_refresh(ssd->listbox, dlg); } } else if (ctrl == ssd->okbutton) { + if (!savedsession) { + /* In a mid-session Change Settings, Apply is always OK. */ + dlg_end(dlg, 1); + return; + } /* * Annoying special case. If the `Open' button is * pressed while no host name is currently set, _and_ @@ -726,9 +735,11 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, struct environ_data *ed; struct portfwd_data *pfd; union control *c; + char *str; ssd = (struct sessionsaver_data *) ctrl_alloc(b, sizeof(struct sessionsaver_data)); + memset(ssd, 0, sizeof(*ssd)); ssd->sesslist = (midsession ? NULL : sesslist); /* @@ -754,7 +765,9 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, /* * The Session panel. */ - ctrl_settitle(b, "Session", "Basic options for your PuTTY session"); + str = dupprintf("Basic options for your %s session", appname); + ctrl_settitle(b, "Session", str); + sfree(str); if (!midsession) { s = ctrl_getset(b, "Session", "hostport", @@ -1001,6 +1014,9 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, HELPCTX(features_retitle), dlg_stdcheckbox_handler, I(offsetof(Config,no_remote_wintitle))); + ctrl_checkbox(s, "Disable remote window title querying (SECURITY)", + 'q', HELPCTX(features_qtitle), dlg_stdcheckbox_handler, + I(offsetof(Config,no_remote_qtitle))); ctrl_checkbox(s, "Disable destructive backspace on server sending ^?",'b', HELPCTX(features_dbackspace), dlg_stdcheckbox_handler, I(offsetof(Config,no_dbackspace))); @@ -1011,7 +1027,9 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, /* * The Window panel. */ - ctrl_settitle(b, "Window", "Options controlling PuTTY's window"); + str = dupprintf("Options controlling %s's window", appname); + ctrl_settitle(b, "Window", str); + sfree(str); s = ctrl_getset(b, "Window", "size", "Set the size of the window"); ctrl_columns(s, 2, 50, 50); @@ -1047,8 +1065,9 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, /* * The Window/Appearance panel. */ - ctrl_settitle(b, "Window/Appearance", - "Configure the appearance of PuTTY's window"); + str = dupprintf("Configure the appearance of %s's window", appname); + ctrl_settitle(b, "Window/Appearance", str); + sfree(str); s = ctrl_getset(b, "Window/Appearance", "cursor", "Adjust the use of the cursor"); @@ -1085,8 +1104,9 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, /* * The Window/Behaviour panel. */ - ctrl_settitle(b, "Window/Behaviour", - "Configure the behaviour of PuTTY's window"); + str = dupprintf("Configure the behaviour of %s's window", appname); + ctrl_settitle(b, "Window/Behaviour", str); + sfree(str); s = ctrl_getset(b, "Window/Behaviour", "title", "Adjust the behaviour of the window title"); @@ -1116,8 +1136,9 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, 'r', 100, HELPCTX(translation_codepage), codepage_handler, P(NULL), P(NULL)); - s = ctrl_getset(b, "Window/Translation", "linedraw", - "Adjust how PuTTY displays line drawing characters"); + str = dupprintf("Adjust how %s displays line drawing characters", appname); + s = ctrl_getset(b, "Window/Translation", "linedraw", str); + sfree(str); ctrl_radiobuttons(s, "Handling of line drawing characters:", NO_SHORTCUT,1, HELPCTX(translation_linedraw), dlg_stdradiobutton_handler, @@ -1187,8 +1208,9 @@ void setup_config_box(struct controlbox *b, struct sesslist *sesslist, HELPCTX(colours_bold), dlg_stdcheckbox_handler, I(offsetof(Config,bold_colour))); - s = ctrl_getset(b, "Window/Colours", "adjust", - "Adjust the precise colours PuTTY displays"); + str = dupprintf("Adjust the precise colours %s displays", appname); + s = ctrl_getset(b, "Window/Colours", "adjust", str); + sfree(str); ctrl_text(s, "Select a colour from the list, and then click the" " Modify button to change its appearance.", HELPCTX(colours_config));