From 34026d19fd336ffcae47b26b5d3db44e007f3127 Mon Sep 17 00:00:00 2001 From: Paul Licameli Date: Fri, 16 Jun 2017 15:39:38 -0400 Subject: [PATCH] Still better cursor handling: change cursor at once... ... on start or stop of transport, in cases as described in the previous commit comment, even if the pointer does not move. --- src/TrackPanel.cpp | 15 ++++++++++++++- src/TrackPanel.h | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index f622e1b74..8928c6467 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -349,6 +349,10 @@ TrackPanel::TrackPanel(wxWindow * parent, wxWindowID id, wxCommandEventHandler(TrackPanel::OnTrackListUpdated), NULL, this); + wxTheApp->Connect(EVT_AUDIOIO_PLAYBACK, + wxCommandEventHandler(TrackPanel::OnPlayback), + NULL, + this); } @@ -365,6 +369,10 @@ TrackPanel::~TrackPanel() wxCommandEventHandler(TrackPanel::OnTrackListResized), NULL, this); + wxTheApp->Disconnect(EVT_AUDIOIO_PLAYBACK, + wxCommandEventHandler(TrackPanel::OnPlayback), + NULL, + this); // This can happen if a label is being edited and the user presses // ALT+F4 or Command+Q @@ -984,6 +992,12 @@ void TrackPanel::UpdateViewIfNoTracks() } } +void TrackPanel::OnPlayback(wxCommandEvent &e) +{ + e.Skip(); + CallAfter( [this] { HandleCursorForLastMouseEvent(); } ); +} + // The tracks positions within the list have changed, so update the vertical // ruler size for the track that triggered the event. void TrackPanel::OnTrackListResized(wxCommandEvent & e) @@ -1548,7 +1562,6 @@ void TrackPanel::HandleClick( const TrackPanelMouseEvent &tpmEvent ) mUIHandle = &TrackPanelResizeHandle::Instance(); } - //Determine if user clicked on the track's left-hand label or ruler if ( !mUIHandle && pCell ) mUIHandle = pCell->HitTest( tpmEvent, GetProject() ).handle; diff --git a/src/TrackPanel.h b/src/TrackPanel.h index 044553663..d39a35113 100644 --- a/src/TrackPanel.h +++ b/src/TrackPanel.h @@ -275,6 +275,7 @@ class AUDACITY_DLL_API TrackPanel final : public OverlayPanel { void OnContextMenu(wxContextMenuEvent & event); + void OnPlayback(wxCommandEvent &); void OnTrackListResized(wxCommandEvent & event); void OnTrackListUpdated(wxCommandEvent & event); void UpdateViewIfNoTracks(); // Call this to update mViewInfo, etc, after track(s) removal, before Refresh().