When passing the 'Highlight last' parameter as true occasional matches
in prior periods could be incorrectly highlighted. This fix should
also improve performance when there is a large decode history, and
highlight request for a new callsign is received.
Using a Highlight Callsign UDP message with `Highlight last` false and
specifying both f/g and b/g colours as invalid now resets the
highlighting on any matching callsign, as well as removing the decode
highlighting internal record.
The Highlight Callsign (13) UDP message now operates in a slightly
different way. The "Highlight last" field, when true valued, causes
all instances of the specified callsign to be highlighted in the
decoding period. This allows external applications to highlight DX
callsigns even when multiple stations are calling them. Before this
was unlikely to work since the external application would have to
respond to Decode (2) UDP messages exceedingly quickly to guarantee
successful highlighting before another decode with the same DX call
was printed. There should be no changes required to external
applications acting as servers to the WSJT-X UDP Message Protocol,
although using the version of the Highlight Callsign (13) with
"Highlight last" should not be required for adhoc callsign
highlighting. It should be reserved for commonly recurring targets and
limited to no more than 100 active highlighting requests at any one
time, otherwise there may be performance impacts on WSJT-X.
The normal action selects the word under the mouse pointer and this
disrupts callsign highlighting. Normal single-click selection
behaviour is unchanged so text can still be selected using the mouse
and copied if desired.
This change also repairs a defect in showing potential LoTW users when
the "Settings->General->Show DXCC, grid, and worked before status"
option is not checked.
Add "Settings->Colors->Decode Highlighting" context menu buttons to
unset b/g and f/g colours. Add colour value as #rrggbb or unset in
text to list items. Improved colour assignment to decodes giving
better and more intuitive behaviour.
This change incorporates a reorganization of the GUI code with
widgets, validators, models, and item delegates being moved to
sub-directories.
Relax the requirements of the ForeignKeyDelegate and related
CandidateKeyFilter classes to allow them to work with constant model
pointers for both referenced and referencing models.