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:
parent
c5228adce3
commit
b570f28224
27
config.c
27
config.c
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user