diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index e72a342d0..b717cbf4e 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -5578,7 +5578,7 @@ void TrackPanel::HandleWheelRotation(wxMouseEvent & event) return; // Special case of pointer in the vertical ruler - { + if (event.ShiftDown() || event.CmdDown()) { wxRect rect; Track *const pTrack = FindTrack(event.m_x, event.m_y, true, false, &rect); if (pTrack && event.m_x >= GetVRulerOffset()) { @@ -5682,36 +5682,30 @@ void TrackPanel::HandleWheelRotationInVRuler const bool isDB = wt->GetDisplay() == WaveTrack::Waveform && wt->GetWaveformSettings().scaleType == WaveformSettings::stLogarithmic; - if (isDB && event.ShiftDown()) { - // Special cases for Waveform dB only - // Vary the bottom of the dB scale, but only if the midline is visible + // Special cases for Waveform dB only. + // Set the bottom of the dB scale but only if it's visible + if (isDB && event.ShiftDown() && event.CmdDown()) { float min, max; wt->GetDisplayBounds(&min, &max); - if (!(min < 0.0 && max > 0.0)) - return; - - WaveformSettings &settings = wt->GetIndependentWaveformSettings(); - float olddBRange = settings.dBRange; - if (steps < 0) - // Zoom out - settings.NextLowerDBRange(); - else - settings.NextHigherDBRange(); - float newdBRange = settings.dBRange; - - if (partner) { - WaveformSettings &settings = partner->GetIndependentWaveformSettings(); + if (min < 0.0 && max > 0.0) { + WaveformSettings &settings = wt->GetIndependentWaveformSettings(); + float olddBRange = settings.dBRange; if (steps < 0) // Zoom out settings.NextLowerDBRange(); else settings.NextHigherDBRange(); - } + float newdBRange = settings.dBRange; - if (!event.CmdDown()) { - // extra-special case that varies the db limit without changing - // magnification + if (partner) { + WaveformSettings &settings = partner->GetIndependentWaveformSettings(); + if (steps < 0) + // Zoom out + settings.NextLowerDBRange(); + else + settings.NextHigherDBRange(); + } const float extreme = (LINEAR_TO_DB(2) + newdBRange) / newdBRange; max = std::min(extreme, max * olddBRange / newdBRange); min = std::max(-extreme, min * olddBRange / newdBRange); @@ -5729,7 +5723,7 @@ void TrackPanel::HandleWheelRotationInVRuler wt, false, (steps < 0), true); } - else if (!(event.CmdDown() || event.ShiftDown())) { + else if (!event.CmdDown() && event.ShiftDown()) { // Scroll some fixed number of pixels, independent of zoom level or track height: static const float movement = 10.0f; const int height = wt->GetHeight() - (kTopMargin + kBottomMargin); diff --git a/src/prefs/MousePrefs.cpp b/src/prefs/MousePrefs.cpp index e51bc752b..5007ed04d 100644 --- a/src/prefs/MousePrefs.cpp +++ b/src/prefs/MousePrefs.cpp @@ -154,9 +154,9 @@ void MousePrefs::CreateList() // AddItem(_("ESC"), _("Select"), _("Toggle center snapping in spectrogram"), _("same as select tool")); #endif - AddItem(_("Wheel-Rotate"), _("Any"), _("Scroll up or down")); - AddItem(_("Shift-Wheel-Rotate"),_("Any"), _("Scroll left or right")); - AddItem(CTRL + _("-Wheel-Rotate"), _("Any"), _("Zoom in or out on Mouse Pointer")); + AddItem(_("Shift-Wheel-Rotate"),_("Any"), _("Scroll waveform")); + AddItem(CTRL + _("-Wheel-Rotate"), _("Any"), _("Zoom waveform in or out")); + AddItem(CTRL + _("Shift-Wheel-Rotate"),_("Any"), _("Waveform (dB) range")); mList->SetColumnWidth(BlankColumn, 0); mList->SetColumnWidth(ToolColumn, wxLIST_AUTOSIZE);