Fix was provided by Hans Petter Selasky with the following comment:
This is a regression issue after:
Move the scrub mouse event handler into ScrubUI...
Where:
if (mWindow)
mWindow->PushEventHandler(&mForwarder);
was removed from the Scrubber() constructor function and
not from the ~Scrubber().
- The TCP cursor is indicating both selection and dragability, so we use the arrow (as UI for tabs does, which are selectable and draggable).
- When actually dragging, we use the clenched fist icon, not the new clenched fist with the fingers cut off icon (aka snowball icon).
Currently AudioIoCallback::ScrubState::Get(), inserts a period of silence the first time it's called because at this time Scrubber::ContinueScrubbingPoll() has not been called, and so message.end has not been set to an appropriate value.
In the case of keyboard scrubbing and play-at-speed, the initial speed is already known, so message.end can be set to this value, removing the need for an initial silence.
The start of keyboard scrubbing and play-at-speed are now faster (the latter very much faster).
... Now they are treated more alike:
Each is shown or hidden (not enabled or disabled) as the corresponding sub-view
of the wave track is shown or not.
Each has separator lines above and below.
They are shown (one or the other or both) after the choices for sub-views, and
not near the bottom of the menu.
This makes the TCP menu one item shorter in the default case that you view only
waveform.
... Problem with static initialization order of ReservedCommandFlags, caused
wrong enablement of menu items (at least on Mac), such as Plot Spectrum or
Contrast enabled when there was no selection
... which is not yet used for anything.
It could be used to describe textual paths for attaching plug-in menu items.
Strings are only path local, not necessarily globally unique, and may be
left empty for separators and for groups that should be transparent to
path identification.
It may also be empty for certain sub-menus, such as those that group effects
according to the changeable criteria in Preferences.
... Except a few where project or plugin manager state or preferences are
needed to compute the items, so evaluation is delayed, often inside lambdas
Comment "Delayed evaluation" wherever there are exceptions
... This caused visible anomalies, for instance when dragging the stereo track
separator between channels. Numbers from one channel used to be drawn over
the ruler of the opposite channel.
... in Wave track context menu and SetTrackVisualsCommand
Instead, discover them through a registry.
This eliminates some duplication of string constants and prepares for
non-intrusive generalization to more kinds of sub-views.
This makes the command agnostic about which subview types are known, but the
context menu still has special case treatment for Spectrogram Settings and
Wave Colors.
... To be consistent with the rearranging of sub-views, and with general UI
guidelines.
The hover cursor is an open hand, and the dragging cursor is the closed hand.