From ad2b4c3446f5e8269ff1404949cd282ebbba7d84 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Tue, 3 May 2016 22:39:31 -0400 Subject: [PATCH] Enable scrolling play by double-click on either play button or QP area of ruler --- src/toolbars/ControlToolBar.cpp | 23 +++++++++++++++-------- src/toolbars/TranscriptionToolBar.cpp | 12 ++++++++---- src/widgets/Ruler.cpp | 3 ++- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/toolbars/ControlToolBar.cpp b/src/toolbars/ControlToolBar.cpp index dda321445..042c3de14 100644 --- a/src/toolbars/ControlToolBar.cpp +++ b/src/toolbars/ControlToolBar.cpp @@ -741,16 +741,21 @@ void ControlToolBar::OnPlay(wxCommandEvent & WXUNUSED(evt)) auto doubleClicked = mPlay->IsDoubleClicked(); mPlay->ClearDoubleClicked(); - if (!CanStopAudioStream()) - return; + auto p = GetActiveProject(); - StopPlaying(); + if (doubleClicked) + p->GetPlaybackScroller().Activate(true); + else { + if (!CanStopAudioStream()) + return; - AudacityProject *p = GetActiveProject(); - if (p) p->TP_DisplaySelection(); + StopPlaying(); - PlayDefault(); - UpdateStatusBar(GetActiveProject()); + if (p) p->TP_DisplaySelection(); + + PlayDefault(); + UpdateStatusBar(p); + } } void ControlToolBar::OnStop(wxCommandEvent & WXUNUSED(evt)) @@ -781,9 +786,11 @@ void ControlToolBar::StopPlaying(bool stopStream /* = true*/) { AudacityProject *project = GetActiveProject(); - if(project) + if(project) { + project->GetPlaybackScroller().Activate(false); // Let scrubbing code do some appearance change project->GetScrubber().StopScrubbing(); + } if (!CanStopAudioStream()) return; diff --git a/src/toolbars/TranscriptionToolBar.cpp b/src/toolbars/TranscriptionToolBar.cpp index 90ed5dc80..488e30757 100644 --- a/src/toolbars/TranscriptionToolBar.cpp +++ b/src/toolbars/TranscriptionToolBar.cpp @@ -479,11 +479,15 @@ void TranscriptionToolBar::OnPlaySpeed(wxCommandEvent & WXUNUSED(event)) auto doubleClicked = button->IsDoubleClicked(); button->ClearDoubleClicked(); - // Let control have precedence over shift - const bool cutPreview = mButtons[TTB_PlaySpeed]->WasControlDown(); - const bool looped = !cutPreview && + if (doubleClicked) + GetActiveProject()->GetPlaybackScroller().Activate(true); + else { + // Let control have precedence over shift + const bool cutPreview = mButtons[TTB_PlaySpeed]->WasControlDown(); + const bool looped = !cutPreview && button->WasShiftDown(); - PlayAtSpeed(looped, cutPreview); + PlayAtSpeed(looped, cutPreview); + } } void TranscriptionToolBar::OnSpeedSlider(wxCommandEvent& WXUNUSED(event)) diff --git a/src/widgets/Ruler.cpp b/src/widgets/Ruler.cpp index 77044b80a..89fea0cb4 100644 --- a/src/widgets/Ruler.cpp +++ b/src/widgets/Ruler.cpp @@ -85,7 +85,7 @@ array of Ruler::Label. #include "../tracks/ui/Scrubbing.h" //#define SCRUB_ABOVE -//#define RULER_DOUBLE_CLICK +#define RULER_DOUBLE_CLICK using std::min; using std::max; @@ -2393,6 +2393,7 @@ void AdornedRulerPanel::OnMouseEvents(wxMouseEvent &evt) void AdornedRulerPanel::HandleQPDoubleClick(wxMouseEvent &evt, wxCoord mousePosX) { + mProject->GetPlaybackScroller().Activate(true); } void AdornedRulerPanel::HandleQPClick(wxMouseEvent &evt, wxCoord mousePosX)