1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-01-25 09:12:24 +00:00

Make Change Settings do something.

[originally from svn r5227]
This commit is contained in:
Owen Dunn 2005-01-29 22:46:43 +00:00
parent 13de3f2357
commit 72cce92fa7
2 changed files with 45 additions and 1 deletions

View File

@ -89,6 +89,8 @@ typedef struct Session {
struct Session **prev; struct Session **prev;
/* Config that created this session */ /* Config that created this session */
Config cfg; Config cfg;
/* Temporary config for passing to Change Settings */
Config temp_cfg;
/* Terminal emulator internal state */ /* Terminal emulator internal state */
Terminal *term; Terminal *term;
/* Display state */ /* Display state */

View File

@ -79,6 +79,11 @@ static void mac_config(int midsession)
s->hasfile = FALSE; s->hasfile = FALSE;
} }
/* Copy the configuration somewhere else in case this is a *
* reconfiguration and the user cancels the operation */
s->temp_cfg = s->cfg;
if (HAVE_COLOR_QD()) if (HAVE_COLOR_QD())
s->settings_window = GetNewCWindow(wSettings, NULL, (WindowPtr)-1); s->settings_window = GetNewCWindow(wSettings, NULL, (WindowPtr)-1);
else else
@ -88,7 +93,7 @@ static void mac_config(int midsession)
s->ctrlbox = ctrl_new_box(); s->ctrlbox = ctrl_new_box();
setup_config_box(s->ctrlbox, &sesslist, midsession, 0, 0); setup_config_box(s->ctrlbox, &sesslist, midsession, 0, 0);
s->settings_ctrls.data = &s->cfg; s->settings_ctrls.data = &s->temp_cfg;
if (midsession) if (midsession)
s->settings_ctrls.end = &mac_enddlg_reconfig; s->settings_ctrls.end = &mac_enddlg_reconfig;
else else
@ -135,6 +140,7 @@ static void mac_enddlg_config(WindowPtr window, int value)
if (value == 0) if (value == 0)
mac_closedlg(window); mac_closedlg(window);
else { else {
s->cfg = s->temp_cfg;
mac_startsession(s); mac_startsession(s);
mac_closedlg(window); mac_closedlg(window);
} }
@ -147,7 +153,43 @@ static void mac_enddlg_reconfig(WindowPtr window, int value)
if (value == 0) if (value == 0)
mac_closedlg(window); mac_closedlg(window);
else { else {
Config prev_cfg = s->cfg;
s->cfg = s->temp_cfg;
mac_closedlg(window); mac_closedlg(window);
/* Pass new config data to the logging module */
log_reconfig(s->logctx, &s->cfg);
/*
* Flush the line discipline's edit buffer in the
* case where local editing has just been disabled.
*/
if (s->ldisc)
ldisc_send(s->ldisc, NULL, 0, 0);
/* Change the palette */
palette_reset(s);
/* Pass new config data to the terminal */
term_reconfig(s->term, &s->cfg);
/* Pass new config data to the back end */
if (s->back)
s->back->reconfig(s->backhandle, &s->cfg);
/* Screen size changed ? */
if (s->cfg.height != prev_cfg.height ||
s->cfg.width != prev_cfg.width ||
s->cfg.savelines != prev_cfg.savelines) {
term_size(s->term, s->cfg.height, s->cfg.width, s->cfg.savelines);
request_resize(s, s->cfg.width, s->cfg.height);
}
/* Set the window title */
if (s->cfg.wintitle[0])
set_title(s, s->cfg.wintitle);
/* TODO: zoom, scroll bar, font */
} }
} }