зеркало из https://github.com/github/putty.git
Tweak to r7635: when changing between protocols in the configuration dialog
and avoiding trashing a non-default port, don't treat a port of 0 as special;
this was causing defaults to "freeze in" for sequences of clicks like SSH,
Raw, Telnet.
Arrange that a port of 0 (which in a backend indicates no default) is displayed
as a blank in the port box, to make this less jarring.
[originally from svn r9077]
[r7635 == db7cc1cba6
]
This commit is contained in:
Родитель
c5228adce3
Коммит
b570f28224
25
config.c
25
config.c
|
@ -52,7 +52,7 @@ static void config_port_handler(union control *ctrl, void *dlg,
|
|||
char buf[80];
|
||||
|
||||
/*
|
||||
* This function works just like the standard edit box handler,
|
||||
* This function works similarly to the standard edit box handler,
|
||||
* only it has to choose the control's label and text from two
|
||||
* different places depending on the protocol.
|
||||
*/
|
||||
|
@ -66,7 +66,11 @@ static void config_port_handler(union control *ctrl, void *dlg,
|
|||
sprintf(buf, "%d", cfg->serspeed);
|
||||
} else {
|
||||
dlg_label_change(ctrl, dlg, PORT_BOX_TITLE);
|
||||
if (cfg->port != 0)
|
||||
sprintf(buf, "%d", cfg->port);
|
||||
else
|
||||
/* Display an (invalid) port of 0 as blank */
|
||||
buf[0] = '\0';
|
||||
}
|
||||
dlg_editbox_set(ctrl, dlg, buf);
|
||||
} else if (event == EVENT_VALCHANGE) {
|
||||
|
@ -118,15 +122,16 @@ void config_protocolbuttons_handler(union control *ctrl, void *dlg,
|
|||
Backend *nb = backend_from_proto(cfg->protocol);
|
||||
assert(ob);
|
||||
assert(nb);
|
||||
/* Iff the user hasn't changed the port from the protocol
|
||||
* default (if any), update it with the new protocol's
|
||||
* default.
|
||||
* (XXX: this isn't perfect; a default can become permanent
|
||||
* by going via the serial backend. However, it helps with
|
||||
* the common case of tabbing through the controls in order
|
||||
* and setting a non-default port.) */
|
||||
if (cfg->port == ob->default_port &&
|
||||
cfg->port > 0 && nb->default_port > 0)
|
||||
/* Iff the user hasn't changed the port from the old protocol's
|
||||
* default, update it with the new protocol's default.
|
||||
* (This includes a "default" of 0, implying that there is no
|
||||
* sensible default for that protocol; in this case it's
|
||||
* displayed as a blank.)
|
||||
* This helps with the common case of tabbing through the
|
||||
* controls in order and setting a non-default port before
|
||||
* getting to the protocol; we want that non-default port
|
||||
* to be preserved. */
|
||||
if (cfg->port == ob->default_port)
|
||||
cfg->port = nb->default_port;
|
||||
}
|
||||
dlg_refresh(hp->host, dlg);
|
||||
|
|
Загрузка…
Ссылка в новой задаче