diff --git a/src/CellularPanel.cpp b/src/CellularPanel.cpp index 23a4b6955..8191820c7 100644 --- a/src/CellularPanel.cpp +++ b/src/CellularPanel.cpp @@ -1125,7 +1125,8 @@ void CellularPanel::Draw( TrackPanelDrawingContext &context, unsigned nPasses ) VisitPostorder( [&]( const wxRect &rect, TrackPanelNode &node ) { // Draw the node - const auto newRect = node.DrawingArea( rect, panelRect, iPass ); + const auto newRect = node.DrawingArea( + context, rect, panelRect, iPass ); if ( newRect.Intersects( panelRect ) ) node.Draw( context, newRect, iPass ); @@ -1134,7 +1135,7 @@ void CellularPanel::Draw( TrackPanelDrawingContext &context, unsigned nPasses ) auto target = Target(); if ( target ) { const auto targetRect = - target->DrawingArea( rect, panelRect, iPass ); + target->DrawingArea( context, rect, panelRect, iPass ); if ( targetRect.Intersects( panelRect ) ) target->Draw( context, targetRect, iPass ); } diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index 4e66df32a..f85cf625d 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -1240,6 +1240,7 @@ struct LabeledChannelGroup final : TrackPanelGroup { } wxRect DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &, unsigned iPass ) override { if ( iPass == TrackArtist::PassBorders ) @@ -1393,6 +1394,7 @@ void TrackPanelDrawable::Draw( } wxRect TrackPanelDrawable::DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &, unsigned ) { return rect; diff --git a/src/TrackPanelDrawable.h b/src/TrackPanelDrawable.h index 8b2802eab..7d5d84998 100644 --- a/src/TrackPanelDrawable.h +++ b/src/TrackPanelDrawable.h @@ -33,7 +33,10 @@ public: // hit-test purposes, spilling over into other parts of the partition of the // panel area. // Default implementation returns rect unchanged. + // TrackPanelContext is passed in because sometimes a drawing context is + // needed for text extent calculations. virtual wxRect DrawingArea( + TrackPanelDrawingContext &context, const wxRect &rect, const wxRect &panelRect, unsigned iPass ); // Utilities for implementing DrawingArea: diff --git a/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp b/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp index 6a719c740..c8bcf5ddb 100644 --- a/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp +++ b/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.cpp @@ -372,6 +372,7 @@ void NoteTrackVZoomHandle::Draw( } wxRect NoteTrackVZoomHandle::DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) { if ( iPass == TrackArtist::PassZooming ) diff --git a/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.h b/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.h index 585e57055..222c20c1d 100644 --- a/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.h +++ b/src/tracks/playabletrack/notetrack/ui/NoteTrackVZoomHandle.h @@ -61,6 +61,7 @@ private: const wxRect &rect, unsigned iPass ) override; wxRect DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override; std::weak_ptr mpTrack; diff --git a/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.cpp b/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.cpp index b89a78471..f417343c4 100644 --- a/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.cpp @@ -90,6 +90,7 @@ void SpectrumVZoomHandle::Draw( } wxRect SpectrumVZoomHandle::DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) { return WaveTrackVZoomHandle::DoDrawingArea( rect, panelRect, iPass ); diff --git a/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.h b/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.h index e1de679ef..310c7fe7d 100644 --- a/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.h +++ b/src/tracks/playabletrack/wavetrack/ui/SpectrumVZoomHandle.h @@ -62,6 +62,7 @@ private: const wxRect &rect, unsigned iPass ) override; wxRect DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override; std::weak_ptr mpTrack; diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.cpp b/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.cpp index a348bbdf1..0f7cfed86 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.cpp +++ b/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.cpp @@ -89,6 +89,7 @@ void WaveformVZoomHandle::Draw( } wxRect WaveformVZoomHandle::DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) { return WaveTrackVZoomHandle::DoDrawingArea( rect, panelRect, iPass ); diff --git a/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.h b/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.h index 781d6ba56..81900093f 100644 --- a/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.h +++ b/src/tracks/playabletrack/wavetrack/ui/WaveformVZoomHandle.h @@ -62,6 +62,7 @@ private: const wxRect &rect, unsigned iPass ) override; wxRect DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override; std::weak_ptr mpTrack; diff --git a/src/tracks/ui/BackgroundCell.cpp b/src/tracks/ui/BackgroundCell.cpp index c18ce9f50..b07c8000b 100644 --- a/src/tracks/ui/BackgroundCell.cpp +++ b/src/tracks/ui/BackgroundCell.cpp @@ -134,6 +134,7 @@ void BackgroundCell::Draw( } wxRect BackgroundCell::DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &, unsigned iPass ) { if ( iPass == TrackArtist::PassBackground ) diff --git a/src/tracks/ui/BackgroundCell.h b/src/tracks/ui/BackgroundCell.h index 2db903683..f75994d40 100644 --- a/src/tracks/ui/BackgroundCell.h +++ b/src/tracks/ui/BackgroundCell.h @@ -51,6 +51,7 @@ private: const wxRect &rect, unsigned iPass ) override; wxRect DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override; AudacityProject *mpProject; diff --git a/src/tracks/ui/CommonTrackControls.cpp b/src/tracks/ui/CommonTrackControls.cpp index 9ca7b082d..6ed7af9b6 100644 --- a/src/tracks/ui/CommonTrackControls.cpp +++ b/src/tracks/ui/CommonTrackControls.cpp @@ -401,6 +401,7 @@ void CommonTrackControls::Draw( } wxRect CommonTrackControls::DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &, unsigned iPass ) { if ( iPass == TrackArtist::PassControls ) diff --git a/src/tracks/ui/CommonTrackControls.h b/src/tracks/ui/CommonTrackControls.h index f1780b11b..ce05975fc 100644 --- a/src/tracks/ui/CommonTrackControls.h +++ b/src/tracks/ui/CommonTrackControls.h @@ -62,6 +62,7 @@ protected: const wxRect &rect, unsigned iPass ) override; wxRect DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override; std::weak_ptr mCloseHandle; diff --git a/src/tracks/ui/SelectHandle.cpp b/src/tracks/ui/SelectHandle.cpp index eacb99a92..4f8a075d3 100644 --- a/src/tracks/ui/SelectHandle.cpp +++ b/src/tracks/ui/SelectHandle.cpp @@ -1050,6 +1050,7 @@ void SelectHandle::Draw( } wxRect SelectHandle::DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) { if ( iPass == TrackArtist::PassSnapping ) diff --git a/src/tracks/ui/SelectHandle.h b/src/tracks/ui/SelectHandle.h index 0ef6a82be..2e6f7052c 100644 --- a/src/tracks/ui/SelectHandle.h +++ b/src/tracks/ui/SelectHandle.h @@ -121,6 +121,7 @@ private: const wxRect &rect, unsigned iPass ) override; wxRect DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override; //void ResetFreqSelectionPin diff --git a/src/tracks/ui/TimeShiftHandle.cpp b/src/tracks/ui/TimeShiftHandle.cpp index 9d92deead..4dfe8d31f 100644 --- a/src/tracks/ui/TimeShiftHandle.cpp +++ b/src/tracks/ui/TimeShiftHandle.cpp @@ -863,6 +863,7 @@ void TimeShiftHandle::Draw( } wxRect TimeShiftHandle::DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) { if ( iPass == TrackArtist::PassSnapping ) diff --git a/src/tracks/ui/TimeShiftHandle.h b/src/tracks/ui/TimeShiftHandle.h index 950de39c7..fd8bf7a48 100644 --- a/src/tracks/ui/TimeShiftHandle.h +++ b/src/tracks/ui/TimeShiftHandle.h @@ -111,6 +111,7 @@ private: const wxRect &rect, unsigned iPass ) override; wxRect DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override; std::shared_ptr mCapturedTrack; diff --git a/src/tracks/ui/TrackVRulerControls.cpp b/src/tracks/ui/TrackVRulerControls.cpp index bbeffd536..b134fe5bd 100644 --- a/src/tracks/ui/TrackVRulerControls.cpp +++ b/src/tracks/ui/TrackVRulerControls.cpp @@ -121,6 +121,7 @@ void TrackVRulerControls::Draw( } wxRect TrackVRulerControls::DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &, unsigned iPass ) { // Common area change for all subclasses when drawing the controls diff --git a/src/tracks/ui/TrackVRulerControls.h b/src/tracks/ui/TrackVRulerControls.h index 9d0385dce..0c307fae2 100644 --- a/src/tracks/ui/TrackVRulerControls.h +++ b/src/tracks/ui/TrackVRulerControls.h @@ -55,6 +55,7 @@ protected: const wxRect &rect, unsigned iPass ) override; wxRect DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override; Track *GetTrack() const; diff --git a/src/tracks/ui/ZoomHandle.cpp b/src/tracks/ui/ZoomHandle.cpp index 5f3f9675a..b1f95bee0 100644 --- a/src/tracks/ui/ZoomHandle.cpp +++ b/src/tracks/ui/ZoomHandle.cpp @@ -208,6 +208,7 @@ void ZoomHandle::Draw( } wxRect ZoomHandle::DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) { if ( iPass == TrackArtist::PassZooming ) diff --git a/src/tracks/ui/ZoomHandle.h b/src/tracks/ui/ZoomHandle.h index c58c58505..e02eb5a65 100644 --- a/src/tracks/ui/ZoomHandle.h +++ b/src/tracks/ui/ZoomHandle.h @@ -58,6 +58,7 @@ private: const wxRect &rect, unsigned iPass ) override; wxRect DrawingArea( + TrackPanelDrawingContext &, const wxRect &rect, const wxRect &panelRect, unsigned iPass ) override; bool IsDragZooming() const;