- for (i = 0; i < lenof(parities); i++)
- dlg_listbox_addwithid(ctrl, dlg, parities[i].name,
- parities[i].val);
- for (i = 0; i < lenof(parities); i++)
- if (cfg->serparity == parities[i].val)
- dlg_listbox_select(ctrl, dlg, i);
+ for (i = 0; i < lenof(parities); i++) {
+ if (mask & (1 << i))
+ dlg_listbox_addwithid(ctrl, dlg, parities[i].name,
+ parities[i].val);
+ }
+ for (i = j = 0; i < lenof(parities); i++) {
+ if (mask & (1 << i)) {
+ if (oldparity == parities[i].val) {
+ dlg_listbox_select(ctrl, dlg, j);
+ break;
+ }
+ j++;
+ }
+ }
+ if (i == lenof(parities)) { /* an unsupported setting was chosen */
+ dlg_listbox_select(ctrl, dlg, 0);
+ oldparity = SER_PAR_NONE;
+ }