diff --git a/src/Menus.cpp b/src/Menus.cpp index d69750664..7b7d2fcae 100644 --- a/src/Menus.cpp +++ b/src/Menus.cpp @@ -3521,6 +3521,11 @@ void AudacityProject::OnUndo() return; } + // can't undo while dragging + if (mTrackPanel->IsMouseCaptured()) { + return; + } + TrackList *l = mUndoManager.Undo(&mViewInfo.sel0, &mViewInfo.sel1); PopState(l); diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 1eba19905..bd7c777d8 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -3185,6 +3185,13 @@ bool TrackPanel::IsDragZooming() return (abs(mZoomEnd - mZoomStart) > DragThreshold); } +/// Determines if drag zooming is active +bool TrackPanel::IsMouseCaptured() +{ + return (mMouseCapture != IsUncaptured); +} + + /// This actually sets the Zoom value when you're done doing /// a drag zoom. void TrackPanel::DragZoom(wxMouseEvent & event, int trackLeftEdge) diff --git a/src/TrackPanel.h b/src/TrackPanel.h index 2a04da1fe..28d7c0aae 100644 --- a/src/TrackPanel.h +++ b/src/TrackPanel.h @@ -252,6 +252,7 @@ class AUDACITY_DLL_API TrackPanel:public wxPanel { virtual void OnTrackSolo(bool shiftdown, Track *t = NULL); virtual void OnTrackClose(); virtual Track * GetFirstSelectedTrack(); + virtual bool IsMouseCaptured(); virtual void EnsureVisible(Track * t);