... Don't let the status message during recording, about remaining disk
capacity, get lost when mouse moves across TrackPanel hit targets or toolbar
buttons.
But, will show those other messages too, only for limited time if the
mouse stops moving; then restore the capacity message.
Needed to correct for unreliability of wxTimer in AudacityProject, as with the
TrackPanel timer, by restarting it sometimes.
The intention evident in previous code was to refresh messages once every 3
seconds. Should be better realized now.
See also the prior fix at b49e467412337be1d2aa0a3b45ba830b04a625b7
This signals a change in the file suffix, and it is received by the Exporter.
However, there is currently no way to change the displayed filename in
the file selection dialog.
This was a step towards a fix for Bug 1355 - "Other uncompressed files" does not (visually) update target file extension according to the chosen "Header" type
... also make popup menus at right up, not down, for consistency with other
popup menus in TrackPanel
Base class also does the event propagation "hack" for ScrubPoller
AudacityProject::Save() is now batch mode sensitive, and if in batch mode (and not overwriting) will save without prompting.
The loop for applying macros to multiple files now also clears down the project, using the new function ResetProjectToEmpty().
... The base class has all the logic for managing hit test handles and
context menus and changes of cursors and status messages as the mouse moves.
CellularPanel has no knowledge of tracks. TrackPanel does, supplying the
policy for dividing the panel area into cells.
AdornedRulerPanel will be rewritten to reuse this base class with another
policy.
(And the notorious TrackPanel.cpp now becomes several hundred lines shorter!)
... while the project makes note of which window has temporarily given up the
focus; and TrackPanel can detect that, so that the yellow border of the focused
track is still drawn while the panel "lends" the focus.
Why do all this? So that, when the ruler is another CellularPanel, ESC key
will work to abort drags in the ruler, but TrackPanel appearance won't change
during the drags.