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

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:
Jacob Nevins 2011-01-14 19:57:00 +00:00
parent c5228adce3
commit b570f28224

View File

@ -52,7 +52,7 @@ static void config_port_handler(union control *ctrl, void *dlg,
char buf[80]; 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 * only it has to choose the control's label and text from two
* different places depending on the protocol. * 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); sprintf(buf, "%d", cfg->serspeed);
} else { } else {
dlg_label_change(ctrl, dlg, PORT_BOX_TITLE); dlg_label_change(ctrl, dlg, PORT_BOX_TITLE);
sprintf(buf, "%d", cfg->port); 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); dlg_editbox_set(ctrl, dlg, buf);
} else if (event == EVENT_VALCHANGE) { } 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); Backend *nb = backend_from_proto(cfg->protocol);
assert(ob); assert(ob);
assert(nb); assert(nb);
/* Iff the user hasn't changed the port from the protocol /* Iff the user hasn't changed the port from the old protocol's
* default (if any), update it with the new protocol's * default, update it with the new protocol's default.
* default. * (This includes a "default" of 0, implying that there is no
* (XXX: this isn't perfect; a default can become permanent * sensible default for that protocol; in this case it's
* by going via the serial backend. However, it helps with * displayed as a blank.)
* the common case of tabbing through the controls in order * This helps with the common case of tabbing through the
* and setting a non-default port.) */ * controls in order and setting a non-default port before
if (cfg->port == ob->default_port && * getting to the protocol; we want that non-default port
cfg->port > 0 && nb->default_port > 0) * to be preserved. */
if (cfg->port == ob->default_port)
cfg->port = nb->default_port; cfg->port = nb->default_port;
} }
dlg_refresh(hp->host, dlg); dlg_refresh(hp->host, dlg);