diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 40289c0e0..f68bb8adb 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -916,6 +916,9 @@ void TrackPanel::HandleMotion( const TrackPanelMouseState &tpmState ) if (!oldCell && oldHandle != handle) // Did not move cell to cell, but did change the target refreshCode = updateFlags; + + if (handle) + handle->Enter(); } // UIHANDLE PREVIEW diff --git a/src/UIHandle.cpp b/src/UIHandle.cpp index 1b3fb3b52..7311cb18a 100644 --- a/src/UIHandle.cpp +++ b/src/UIHandle.cpp @@ -15,6 +15,10 @@ UIHandle::~UIHandle() { } +void UIHandle::Enter() +{ +} + void UIHandle::DrawExtras (DrawingPass, wxDC *, const wxRegion &, const wxRect &) { diff --git a/src/UIHandle.h b/src/UIHandle.h index 7903faf68..b824931f5 100644 --- a/src/UIHandle.h +++ b/src/UIHandle.h @@ -47,6 +47,10 @@ public: virtual ~UIHandle() = 0; + // Before clicking, the handle is notified that it has been "hit" + // Default does nothing. + virtual void Enter(); + // Assume hit test (implemented in other classes) was positive. // May return Cancelled, overriding the hit test decision and stopping drag. // Otherwise the framework will later call Release or Cancel after diff --git a/src/tracks/labeltrack/ui/LabelGlyphHandle.cpp b/src/tracks/labeltrack/ui/LabelGlyphHandle.cpp index 865b1a6eb..114787d89 100644 --- a/src/tracks/labeltrack/ui/LabelGlyphHandle.cpp +++ b/src/tracks/labeltrack/ui/LabelGlyphHandle.cpp @@ -29,6 +29,10 @@ LabelGlyphHandle::LabelGlyphHandle : mpLT{ pLT } , mRect{ rect } , mHit{ hit } +{ +} + +void LabelGlyphHandle::Enter() { mChangeHighlight = RefreshCode::RefreshCell; } diff --git a/src/tracks/labeltrack/ui/LabelGlyphHandle.h b/src/tracks/labeltrack/ui/LabelGlyphHandle.h index 1faf44514..ca939359a 100644 --- a/src/tracks/labeltrack/ui/LabelGlyphHandle.h +++ b/src/tracks/labeltrack/ui/LabelGlyphHandle.h @@ -54,6 +54,8 @@ public: virtual ~LabelGlyphHandle(); + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override; diff --git a/src/tracks/labeltrack/ui/LabelTextHandle.cpp b/src/tracks/labeltrack/ui/LabelTextHandle.cpp index 5127a8a8b..e2bbb5f7f 100644 --- a/src/tracks/labeltrack/ui/LabelTextHandle.cpp +++ b/src/tracks/labeltrack/ui/LabelTextHandle.cpp @@ -24,6 +24,10 @@ LabelTextHandle::LabelTextHandle : mpLT{ pLT } , mLabelNum{ labelNum } { +} + +void LabelTextHandle::Enter() +{ #ifdef EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING mChangeHighlight = RefreshCode::RefreshCell; #endif diff --git a/src/tracks/labeltrack/ui/LabelTextHandle.h b/src/tracks/labeltrack/ui/LabelTextHandle.h index 9dc4c0327..6ea2eab00 100644 --- a/src/tracks/labeltrack/ui/LabelTextHandle.h +++ b/src/tracks/labeltrack/ui/LabelTextHandle.h @@ -38,6 +38,8 @@ public: std::shared_ptr GetTrack() const { return mpLT.lock(); } int GetLabelNum() const { return mLabelNum; } + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override; diff --git a/src/tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.cpp b/src/tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.cpp index ec47314ed..47f9cd48a 100644 --- a/src/tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.cpp +++ b/src/tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.cpp @@ -24,6 +24,10 @@ NoteTrackButtonHandle::NoteTrackButtonHandle : mpTrack{ pTrack } , mChannel{ channel } , mRect{ rect } +{ +} + +void NoteTrackButtonHandle::Enter() { mChangeHighlight = RefreshCode::RefreshCell; } diff --git a/src/tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.h b/src/tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.h index b80068387..1078faa04 100644 --- a/src/tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.h +++ b/src/tracks/playabletrack/notetrack/ui/NoteTrackButtonHandle.h @@ -47,6 +47,8 @@ public: const NoteTrackButtonHandle &newState); protected: + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override; diff --git a/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp b/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp index 7e3298fe9..287615db7 100644 --- a/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp +++ b/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp @@ -40,6 +40,10 @@ NoteTrackVZoomHandle::NoteTrackVZoomHandle : mZoomStart(y), mZoomEnd(y), mRect(rect) , mpTrack{ pTrack } { +} + +void NoteTrackVZoomHandle::Enter() +{ #ifdef EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING mChangeHighlight = RefreshCode::RefreshCell; #endif diff --git a/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.h b/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.h index cd17f5a36..7f5702cc8 100644 --- a/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.h +++ b/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.h @@ -38,6 +38,8 @@ public: std::shared_ptr GetTrack() const { return mpTrack.lock(); } + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override; diff --git a/src/tracks/playabletrack/wavetrack/ui/CutlineHandle.cpp b/src/tracks/playabletrack/wavetrack/ui/CutlineHandle.cpp index 67beb53e4..35542e307 100644 --- a/src/tracks/playabletrack/wavetrack/ui/CutlineHandle.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/CutlineHandle.cpp @@ -28,6 +28,10 @@ CutlineHandle::CutlineHandle : mpTrack{ pTrack } , mLocation{ location } { +} + +void CutlineHandle::Enter() +{ #ifdef EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING mChangeHighlight = RefreshCode::RefreshCell; #endif diff --git a/src/tracks/playabletrack/wavetrack/ui/CutlineHandle.h b/src/tracks/playabletrack/wavetrack/ui/CutlineHandle.h index 720d9197b..cb2048bf0 100644 --- a/src/tracks/playabletrack/wavetrack/ui/CutlineHandle.h +++ b/src/tracks/playabletrack/wavetrack/ui/CutlineHandle.h @@ -45,6 +45,8 @@ public: const WaveTrackLocation &GetLocation() { return mLocation; } std::shared_ptr GetTrack() { return mpTrack; } + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override; diff --git a/src/tracks/playabletrack/wavetrack/ui/SampleHandle.cpp b/src/tracks/playabletrack/wavetrack/ui/SampleHandle.cpp index 3986e2118..fd0044138 100644 --- a/src/tracks/playabletrack/wavetrack/ui/SampleHandle.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/SampleHandle.cpp @@ -38,6 +38,10 @@ static const double SMOOTHING_PROPORTION_MIN = 0.0; SampleHandle::SampleHandle( const std::shared_ptr &pTrack ) : mClickedTrack{ pTrack } { +} + +void SampleHandle::Enter() +{ #ifdef EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING mChangeHighlight = RefreshCode::RefreshCell; #endif diff --git a/src/tracks/playabletrack/wavetrack/ui/SampleHandle.h b/src/tracks/playabletrack/wavetrack/ui/SampleHandle.h index b2f29af3a..fa0a308af 100644 --- a/src/tracks/playabletrack/wavetrack/ui/SampleHandle.h +++ b/src/tracks/playabletrack/wavetrack/ui/SampleHandle.h @@ -46,6 +46,8 @@ public: std::shared_ptr GetTrack() const { return mClickedTrack; } + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override; diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.cpp b/src/tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.cpp index 3fddba45e..186669979 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.cpp @@ -49,6 +49,10 @@ WaveTrackVZoomHandle::WaveTrackVZoomHandle : mZoomStart(y), mZoomEnd(y), mRect(rect) , mpTrack{ pTrack } { +} + +void WaveTrackVZoomHandle::Enter() +{ #ifdef EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING mChangeHighlight = RefreshCode::RefreshCell; #endif diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.h b/src/tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.h index 88f5a9db5..c7767d054 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.h +++ b/src/tracks/playabletrack/wavetrack/ui/WaveTrackVZoomHandle.h @@ -38,6 +38,8 @@ public: std::shared_ptr GetTrack() const { return mpTrack.lock(); } + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override; diff --git a/src/tracks/ui/ButtonHandle.cpp b/src/tracks/ui/ButtonHandle.cpp index 54412c936..df2889458 100644 --- a/src/tracks/ui/ButtonHandle.cpp +++ b/src/tracks/ui/ButtonHandle.cpp @@ -25,13 +25,17 @@ ButtonHandle::ButtonHandle : mpTrack{ pTrack } , mRect{ rect } { - mChangeHighlight = RefreshCode::RefreshCell; } ButtonHandle::~ButtonHandle() { } +void ButtonHandle::Enter() +{ + mChangeHighlight = RefreshCode::RefreshCell; +} + UIHandle::Result ButtonHandle::Click (const TrackPanelMouseEvent &evt, AudacityProject *pProject) { diff --git a/src/tracks/ui/ButtonHandle.h b/src/tracks/ui/ButtonHandle.h index 45899385e..bf207e6d8 100644 --- a/src/tracks/ui/ButtonHandle.h +++ b/src/tracks/ui/ButtonHandle.h @@ -42,6 +42,8 @@ protected: virtual Result CommitChanges (const wxMouseEvent &event, AudacityProject *pProject, wxWindow *pParent) = 0; + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override; diff --git a/src/tracks/ui/EnvelopeHandle.cpp b/src/tracks/ui/EnvelopeHandle.cpp index ed2d19f3f..7160800fc 100644 --- a/src/tracks/ui/EnvelopeHandle.cpp +++ b/src/tracks/ui/EnvelopeHandle.cpp @@ -30,6 +30,10 @@ Paul Licameli split from TrackPanel.cpp EnvelopeHandle::EnvelopeHandle( Envelope *pEnvelope ) : mEnvelope{ pEnvelope } { +} + +void EnvelopeHandle::Enter() +{ #ifdef EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING mChangeHighlight = RefreshCode::RefreshCell; #endif diff --git a/src/tracks/ui/EnvelopeHandle.h b/src/tracks/ui/EnvelopeHandle.h index 5b0fdf0d2..d0ab09cea 100644 --- a/src/tracks/ui/EnvelopeHandle.h +++ b/src/tracks/ui/EnvelopeHandle.h @@ -56,6 +56,8 @@ public: Envelope *GetEnvelope() const { return mEnvelope; } + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override; diff --git a/src/tracks/ui/SliderHandle.cpp b/src/tracks/ui/SliderHandle.cpp index 984de4645..0a63dc5c6 100644 --- a/src/tracks/ui/SliderHandle.cpp +++ b/src/tracks/ui/SliderHandle.cpp @@ -21,6 +21,10 @@ SliderHandle::SliderHandle : mSliderFn{ sliderFn } , mRect{ rect } , mpTrack{ pTrack } +{ +} + +void SliderHandle::Enter() { mChangeHighlight = RefreshCode::RefreshCell; } diff --git a/src/tracks/ui/SliderHandle.h b/src/tracks/ui/SliderHandle.h index 6ae9afb4c..dd94809be 100644 --- a/src/tracks/ui/SliderHandle.h +++ b/src/tracks/ui/SliderHandle.h @@ -47,6 +47,8 @@ protected: virtual Result CommitChanges (const wxMouseEvent &event, AudacityProject *pProject) = 0; + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override; diff --git a/src/tracks/ui/TimeShiftHandle.cpp b/src/tracks/ui/TimeShiftHandle.cpp index d03065862..e90c64a6a 100644 --- a/src/tracks/ui/TimeShiftHandle.cpp +++ b/src/tracks/ui/TimeShiftHandle.cpp @@ -29,6 +29,10 @@ TimeShiftHandle::TimeShiftHandle : mCapturedTrack{ pTrack } , mGripHit{ gripHit } { +} + +void TimeShiftHandle::Enter() +{ #ifdef EXPERIMENTAL_TRACK_PANEL_HIGHLIGHTING mChangeHighlight = RefreshCode::RefreshCell; #endif diff --git a/src/tracks/ui/TimeShiftHandle.h b/src/tracks/ui/TimeShiftHandle.h index 03c791bbd..a49eb5c87 100644 --- a/src/tracks/ui/TimeShiftHandle.h +++ b/src/tracks/ui/TimeShiftHandle.h @@ -75,6 +75,8 @@ public: virtual ~TimeShiftHandle(); + void Enter() override; + Result Click (const TrackPanelMouseEvent &event, AudacityProject *pProject) override;