Testing-feedback fixes: tab order, label wording, parametric editing, recording default

* Connectivity tab order: Add peer by IP now sits right after Rename peer (before the Discovered
   list), grouped with the connected-peer actions, per Ed's requested order. Dropped the second
   section header (only the lock toggle was under it).
 * Audio I/O labels: "Set volume for all received audio" → "Master volume for received audio" (the
   code never got this rename, only the manual had). Device lists now say "audio": "...for received
   audio" and "WASAPI/ASIO audio inputs/outputs to send". Labels + AccessibleNames updated together.
 * Add EQ band dialog: the spin/edit boxes now select-all on focus, so a typed value REPLACES what's
   there instead of being inserted next to it and reverting (typing 2.5 over 4.0 now works).
 * Parametric bands list: Left/Right arrow nudge the selected band's gain by half a dB, live —
   up/down still move between bands. NVDA re-reads the band's new dB.
 * Recording settings: source list reordered to Both (top, now the default) / Received / Sent;
   display order decoupled from the RecordingSource enum. Default RecordingSettings.Source = Both.
 * Preferences: Colour theme is now first in the General tab order.

Manual updated. Build clean; --selftest passes; deployed to both test folders. Held for next release.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Ednunp
2026-07-08 11:36:02 +01:00
co-authored by Claude Opus 4.8
parent 90a1ab3257
commit e35f2f318a
14 changed files with 339 additions and 101 deletions
+10 -4
View File
@@ -197,7 +197,7 @@ internal sealed class RecordingSettingsDialog : Form
sourceList.SelectedIndexChanged += (_, _) =>
{
if (sourceList.SelectedIndex < 0) return;
working.Source = (RecordingSource)sourceList.SelectedIndex;
working.Source = SourceOrder[sourceList.SelectedIndex];
};
formatList.SelectedIndexChanged += (_, _) =>
@@ -372,10 +372,11 @@ internal sealed class RecordingSettingsDialog : Form
{
sourceList.BeginUpdate();
sourceList.Items.Clear();
// Order MUST match RecordingSource enum values 0/1/2.
// Display order is decoupled from the enum via SourceOrder (both first as the default, then
// received, then sent). Add the labels in that same order.
sourceList.Items.Add("Record both sent and received audio");
sourceList.Items.Add("Record all received audio");
sourceList.Items.Add("Record all sent audio");
sourceList.Items.Add("Record both sent and received audio");
sourceList.EndUpdate();
}
@@ -489,9 +490,14 @@ internal sealed class RecordingSettingsDialog : Form
channelList.EndUpdate();
}
// Display order for the recording-source list (decoupled from the RecordingSource enum values): both
// at the top as the default, then received, then sent.
private static readonly RecordingSource[] SourceOrder =
[RecordingSource.Both, RecordingSource.ReceivedOnly, RecordingSource.SentOnly];
private void SelectFromSource(RecordingSource src)
{
var idx = (int)src;
var idx = Array.IndexOf(SourceOrder, src);
if (idx >= 0 && idx < sourceList.Items.Count) sourceList.SelectedIndex = idx;
}