... 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.
... To be reused with the Ruler too.
The new base class does all the handling of hit tests on cells and managing
of UIHandles, and keyboard events and focus.
It has no knowledge of tracks -- that all resides in overriding functions in
TrackPanel.
Still to do, of course, is reorganizing drawing with callbacks to the cell
objects.
... All updates of position are done in DoGetRectangle(). Ruler need only
expose one function, DrawOverlays().
Don't redraw indicators twice when dragging (hiding and showing again), making
some flicker. Just do one update.
This restores the 2.2.2 behaviour, with a subdirectory called 'cleaned'. The problem was that 2.2.2 used special cases for MP3 Ogg and WAV exports, which were stripped out in favour of using the built-in Export command. However, the differences in behaviour (prompting) between batch and non batch mode were not taken into account.
The original fix for this bug deleted pluginregistry.cfg. That was judged to be too extreme. This new modified fix updates pluginregistry.cfg, changing the Nyquist Prompt type and removing duplicated Sample Data Import/Export. In future if we have further menu rearrangements of plug ins, we can make them using the same methods as in this fix.
This code now does the clean out of pluginregistry.cfg.
Nicer for the user would be to preserve the list of hand-added plug-ins. But a clean restart is easier.
All backing bitmaps (not just the one in track panel) now are set to 24 bits.
Big thanks to David Bailes for tracking down the root cause of slow BitBlts, and the comments at https://trac.wxwidgets.org/ticket/14403 which led to the fix.
In testing the bitmaps, I also fixed the sizer errors reported for Export.cpp that wxWidgets now reports as ASSERTS when running in debug builds.