Fixed issue 2, i.e. the scrub indicator no longer appears during Play at Speed, and the status bar now says 'Playing at Speed' rather than 'Scrubbing'.
Worth doing for users with wide screens, who want to use the toolbar at full screen width.
Both toolbars can now expand to a little over 2000 pixels width.
Note that the max sizes affect what is drawn. You can make the toolbars wider still, but the sliders inside them won't continue to lengthen.
I moved 'Fit()' from ToolBars into MeterToolBar, because it is a workaround for an incorrect size calculation by MeterToolBar. MeterToolBar is sized as if there is no resizer, so when there is one, the toolbar needs to be expanded (using Fit) to accommodate the resizer.
I also set the min size of MeterToolBar to 150, so that some meter will appear, even if Toolbar shrunk to the minimum.
This adds a new preference to Playback prefs, VariSpeedPlay, on by default, which makes it possible to vary the playback speed slider whilst audio is playing using play at speed. The code uses the Scrubbing playback engine.
This code is not final, but is already useful. Known issues:
1- Playback does not stop and pop-up the Play at Speed button at the end of playing the selection.
2- The scrub widget shows uselessly on the scrub ruler when in Play at Speed mode and the status bar proclaims 'Scrubbing'.
3- At low speeds the playback is clicky, with VariSpeedPlay, even if no changes to speed are being made.
If we can't fix both 1 and 2 by 2.3.0 release time, VariSpeedPlay will be made false by default.
Now shown as "Nyquist Effects Prompt" (in Effects menu) and "Nyquist Tools Prompt" (in Tools Menu).
These prompts will have slightly different behaviour, e.g. only tools allow aud-do.
Changes to the state of the track which are appended to the track name, as suggested by Robert.
Mute On becomes Muted.
Solo On becomes Soloed.
Select On becomes Selected
Sync Lock Selected becomes Sync Locked.
Change the accessible name of the combo box from "Spectral selection" to "Show". It's less verbose, and brings it into line with the "Show" combo box in the Selection toolbar.
... I observed that you couldn't, with a Mac Mini connected to a monitor;
two output devices (monitor and built-in) but no input device (there is no
built in mic)
We were for example getting many of these:
\audacity\src\widgets\numerictextctrl.h(171): warning C4458: declaration of 'value' hides class member
MSVC2013 didn't warn about these, but MSVC2017 does.
- WindowsTargetPlatformVersion=10.0.17134.0; latest fixes, but believed still compatible with Windows 7.
- Platform=Win32;
- PreferredToolArchitecture=x64; 64 bit build tools can use more memory.
- PlatformToolset=v141; v140 would use MSVC2015 tools. v141 matches MSVC2017 IDE builds.
If we don't specify these, we get the defaults and could get wxWidgets compiled with SDK8.1 (default) and Audacity with a SDK 10.
Problem: the call mTrackPanel->SetFocusedTrack(NULL); in AudacityProject::OnUndo, and OnRedo cause NVDA to read the name of track one before reading the name of the track finally focused.
These calls were introduced by this commit:
Author: llucius <llucius@47890b92-0858-11df-a26f-8b716316a5bc>
Date: 9 years ago (23/03/2009 10:56:39)
Commit hash: bb7e9c186ab538d20ee5fa6a77da533902ec79a3
Children: 0034ab439e
Parent(s): 4ed2ff6dbf
Invalidate FocusedTrack pointer after undo/redo as it is no longer valid...I wonder if there are other cases like hits???
Fix: In TrackPanelAx, the last focused track is now stored as a weak_ptr, so these calls can be removed.
Problem. When an effect is applied, whatever track is the original focus, there is a focus event for track one. This causes NVDA to read out the track name of track 1, which is unnecessary noise.
The reason for this is that the execution of the Progress dialog destructor causes AudacityProject::OnActivate() to be called which causes a set focus on the TrackPanel. When this happens, the pointers to the selected tracks have changed, but the final focus has not been set (at the end of AudacityProject::DoEffect()). So TrackPanelAx::GetFocus returns the first track.
Fix: Modify TrackPanelAx::GetFocus so that if the existing pointer to the focused track is null, then use the track at the same position, if it exists.