... This includes new always-seeking modes unlike scrubbing which can switch
to seeking and back according to the left mouse button state.
The reason for this is that visually impaired users should not be required to
click with the mouse in the track panel window to signal seeking. But mouse
movements can still control scrubbing, because we poll the global mouse
position in the timer, not relying on events from any window object.
... So it does not depend on the focused window, and can work when selection
toolbar has focus. But TrackPanel's escape handling may still take precedence
over it.
... If there is play but also an escapable drag action in TrackPanel, such as
a change of selection, then ESC aborts the drag. A second ESC would stop play.
The event handling for these ESC actions may be in the wrong place though. If
you ctrl-f6 during play so that the selection toolbar gets focus, then ESC
does not work to stop play.
Also removed i18n-hint. Reasons motivating the change include translation issue, sense that it is too wordy (either "OK" or the original "Audacious!" work better), accessibility, and a possible shift from a colloquial to more formal style.
... Specifically there are "overlays" for play indicator, cursor, scrubbing
speed text, and quick play indicator, which now use a common abstract class
interface.
Also moved details of handling timer events elsewhere.
Made a class Scrubber with most of the details. Still there are several places
where TrackPanel must check for scrubbing and call to Scrubber. Too many
places.
Discussion on -quality pointed out that (1) in alphas the '!' is emphasising the year, 2016, rather than the 'Welcome', that (2) in release the '!' can easily be misread as a 1 and so part of the version number (3) the topic is "How to Get Help", rather than the welcome (4) too many !!!!'s are OMG!!! culture (5) we already have an "!" in the title.
Access BlockFile::mFileName without copying, with proper multithreading cautions
Redefine ODLocker as movable, and it may try-lock only.
Avoid some wxString copies
fix bugs in previous