1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-16 08:09:32 +02:00

Ctrl-mousewheel in vertical ruler of waveform dB view varies bottom of scale...

... provided the bottom is visible
This commit is contained in:
Paul Licameli 2015-08-16 12:18:17 -04:00
parent 2dc824ba46
commit 141d93bbc0
3 changed files with 41 additions and 5 deletions

View File

@ -6126,10 +6126,29 @@ void TrackPanel::HandleWheelRotation(wxMouseEvent & event)
Track *const pTrack = FindTrack(event.m_x, event.m_y, true, false, &rect);
if (pTrack && event.m_x >= GetVRulerOffset()) {
if (pTrack->GetKind() == Track::Wave) {
HandleWaveTrackVZoom(
mTracks, rect, event.m_y, event.m_y,
static_cast<WaveTrack*>(pTrack), false, (event.m_wheelRotation < 0),
true);
WaveTrack *const wt = static_cast<WaveTrack*>(pTrack);
if (event.CmdDown() &&
wt->GetWaveformSettings().scaleType == WaveformSettings::stLogarithmic) {
// Vary the bottom of the dB scale, but only if the midline is visible
float min, max;
wt->GetDisplayBounds(&min, &max);
if (min < 0.0 && max > 0.0) {
WaveformSettings &settings = wt->GetIndependentWaveformSettings();
if (event.m_wheelRotation < 0)
// Zoom out
settings.NextLowerDBRange();
else
settings.NextHigherDBRange();
}
else
return;
}
else {
HandleWaveTrackVZoom(
mTracks, rect, event.m_y, event.m_y,
wt, false, (event.m_wheelRotation < 0),
true);
}
UpdateVRuler(pTrack);
Refresh(false);
MakeParentModifyState(true);

View File

@ -126,10 +126,25 @@ void WaveformSettings::ConvertToActualDBRange()
wxArrayString codes;
GUIPrefs::GetRangeChoices(NULL, &codes);
long value = 0;
codes[dBRange].ToLong(&value);
codes[std::max(0, std::min(int(codes.size()) - 1, dBRange))]
.ToLong(&value);
dBRange = int(value);
}
void WaveformSettings::NextLowerDBRange()
{
ConvertToEnumeratedDBRange();
++dBRange;
ConvertToActualDBRange();
}
void WaveformSettings::NextHigherDBRange()
{
ConvertToEnumeratedDBRange();
--dBRange;
ConvertToActualDBRange();
}
namespace
{
wxArrayString &scaleNamesArray()

View File

@ -47,6 +47,8 @@ public:
void ConvertToEnumeratedDBRange();
void ConvertToActualDBRange();
void NextLowerDBRange();
void NextHigherDBRange();
enum ScaleType {
stLinear,