Keep the Check window's lists and columns between key presses

Tracing key presses with a busy feed showed the Check window rebuilding
the distinct call lists of the log, the call history and every spot,
and all five columns of controls, on each press.

- ContestLog.Revision goes up with every change to the contacts. The
  Check sources keep each call list until its source changes.
- The Check window builds a column again only when what it shows
  differs.

UI thread time while typing with eight windows open went from 14.6% to
9.3%.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-25 13:42:37 +00:00
co-authored by Claude Sonnet 5.5
parent 5f9d186150
commit aa54f8dcbe
3 changed files with 84 additions and 19 deletions
+6
View File
@@ -50,6 +50,10 @@ public sealed class ContestLog
public Contest Contest => contest;
/// Goes up with every change to the contacts, so something worked out
/// from the log can be kept until this changes.
public int Revision { get; private set; }
public IReadOnlyList<Qso> Qsos => qsos;
/// The contacts alone. In WAE the log also holds QTC traffic, and a QTC
@@ -123,6 +127,7 @@ public sealed class ContestLog
Qso scored = ApplyVerdict(qso, verdict);
qsos.Add(scored);
Index(scored, verdict);
Revision++;
return scored;
}
}
@@ -342,6 +347,7 @@ public sealed class ContestLog
private void Rebuild()
{
Revision++;
workedKeys.Clear();
trafficWith.Clear();
claimedMultipliers.Clear();