Diff

Differences From Artifact [2a981e3834]:

To Artifact [8a4ceade21]:


48
49
50
51
52
53
54
55

56
57
58
59
60
61
62
63
64
65
66
67
68

69




70
71
72
73
74
75
76
48
49
50
51
52
53
54

55
56
57
58
59
60
61
62
63
64
65
66
67
68
69

70
71
72
73
74
75
76
77
78
79
80







-
+













+
-
+
+
+
+







static void config_port_handler(union control *ctrl, void *dlg,
				void *data, int event)
{
    Config *cfg = (Config *)data;
    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.
     */
    if (event == EVENT_REFRESH) {
	if (cfg->protocol == PROT_SERIAL) {
	    /*
	     * This label text is carefully chosen to contain a p,
	     * since that's the shortcut for the port control.
	     */
	    dlg_label_change(ctrl, dlg, "Speed");
	    sprintf(buf, "%d", cfg->serspeed);
	} else {
	    dlg_label_change(ctrl, dlg, PORT_BOX_TITLE);
	    if (cfg->port != 0)
	    sprintf(buf, "%d", cfg->port);
		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) {
	dlg_editbox_get(ctrl, dlg, buf, lenof(buf));
	if (cfg->protocol == PROT_SERIAL)
	    cfg->serspeed = atoi(buf);
	else
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128










129
130
131
132
133
134
135
136
118
119
120
121
122
123
124








125
126
127
128
129
130
131
132
133
134

135
136
137
138
139
140
141







-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-







	assert(button >= 0 && button < ctrl->radio.nbuttons);
	cfg->protocol = ctrl->radio.buttondata[button].i;
	if (oldproto != cfg->protocol) {
	    Backend *ob = backend_from_proto(oldproto);
	    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 &&
	    /* 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 > 0 && nb->default_port > 0)
		cfg->port = nb->default_port;
	}
	dlg_refresh(hp->host, dlg);
	dlg_refresh(hp->port, dlg);
    }
}