diff --git a/src/Printing.cpp b/src/Printing.cpp index 8fd0b543c..7e48aa90d 100644 --- a/src/Printing.cpp +++ b/src/Printing.cpp @@ -46,9 +46,10 @@ class AudacityPrintout final : public wxPrintout { public: AudacityPrintout(wxString title, - TrackList *tracks): + TrackList *tracks, TrackPanel &panel): wxPrintout(title), mTracks(tracks) + , mPanel(panel) { } bool OnPrintPage(int page); @@ -58,6 +59,7 @@ class AudacityPrintout final : public wxPrintout int *selPageFrom, int *selPageTo); private: + TrackPanel &mPanel; TrackList *mTracks; }; @@ -84,7 +86,7 @@ bool AudacityPrintout::OnPrintPage(int WXUNUSED(page)) ruler.SetLabelEdges(true); ruler.Draw(*dc); - TrackArtist artist; + TrackArtist artist( &mPanel ); artist.SetBackgroundBrushes(*wxWHITE_BRUSH, *wxWHITE_BRUSH, *wxWHITE_PEN, *wxWHITE_PEN); const double screenDuration = mTracks->GetEndTime(); @@ -144,12 +146,14 @@ void HandlePageSetup(wxWindow *parent) gPrintData() = pageSetupDialog.GetPageSetupData().GetPrintData(); } -void HandlePrint(wxWindow *parent, const wxString &name, TrackList *tracks) +void HandlePrint( + wxWindow *parent, const wxString &name, TrackList *tracks, + TrackPanel &panel) { wxPrintDialogData printDialogData(gPrintData()); wxPrinter printer(&printDialogData); - AudacityPrintout printout(name, tracks); + AudacityPrintout printout(name, tracks, panel); if (!printer.Print(parent, &printout, true)) { if (wxPrinter::GetLastError() == wxPRINTER_ERROR) { AudacityMessageBox(_("There was a problem printing."), diff --git a/src/Printing.h b/src/Printing.h index e481ca67c..4595a0543 100644 --- a/src/Printing.h +++ b/src/Printing.h @@ -16,9 +16,12 @@ class wxWindow; class TrackList; +class TrackPanel; void HandlePageSetup(wxWindow *parent); -void HandlePrint(wxWindow *parent, const wxString &name, TrackList *tracks); +void HandlePrint( + wxWindow *parent, const wxString &name, TrackList *tracks, + TrackPanel &panel); #endif // __AUDACITY_PRINTING__ diff --git a/src/TrackArtist.cpp b/src/TrackArtist.cpp index 959c6e812..08ebbd9f8 100644 --- a/src/TrackArtist.cpp +++ b/src/TrackArtist.cpp @@ -164,7 +164,8 @@ int TrackArt::GetBottom(NoteTrack *t, const wxRect &rect) */ #endif // USE_MIDI -TrackArtist::TrackArtist() +TrackArtist::TrackArtist( TrackPanel *parent_ ) + : parent( parent_ ) { mdBrange = ENV_DB_RANGE; mShowClipping = false; diff --git a/src/TrackArtist.h b/src/TrackArtist.h index 3e7d112cb..c2ed2e36a 100644 --- a/src/TrackArtist.h +++ b/src/TrackArtist.h @@ -36,6 +36,7 @@ class NoteTrack; class LabelTrack; class TimeTrack; class TrackList; +class TrackPanel; class Ruler; class SelectedRegion; class ZoomInfo; @@ -151,7 +152,7 @@ namespace TrackArt { class AUDACITY_DLL_API TrackArtist { public: - TrackArtist(); + TrackArtist( TrackPanel *parent_ ); ~TrackArtist(); static TrackArtist *Get( TrackPanelDrawingContext & ); @@ -169,6 +170,8 @@ public: void UpdateVRuler(const Track *t, const wxRect & rect); + TrackPanel *parent; + // Preference values float mdBrange; // "/GUI/EnvdBRange" long mShowClipping; // "/GUI/ShowClipping" diff --git a/src/TrackPanel.cpp b/src/TrackPanel.cpp index c2e2942cb..962e127af 100644 --- a/src/TrackPanel.cpp +++ b/src/TrackPanel.cpp @@ -237,7 +237,7 @@ TrackPanel::TrackPanel(wxWindow * parent, wxWindowID id, mRedrawAfterStop = false; - mTrackArtist = std::make_unique(); + mTrackArtist = std::make_unique( this ); mTimeCount = 0; mTimer.parent = this; diff --git a/src/effects/Equalization.cpp b/src/effects/Equalization.cpp index eadf269a3..b552c2e40 100644 --- a/src/effects/Equalization.cpp +++ b/src/effects/Equalization.cpp @@ -3051,7 +3051,11 @@ void EqualizationPanel::OnPaint(wxPaintEvent & WXUNUSED(event)) if( mEffect->mDraw->GetValue() ) { ZoomInfo zoomInfo( 0.0, mEnvRect.width-1 ); - TrackArtist artist; + + // Back pointer to TrackPanel won't be needed in the one drawing + // function we use here + TrackArtist artist( nullptr ); + artist.pZoomInfo = &zoomInfo; TrackPanelDrawingContext context{ memDC, {}, {}, &artist }; mEffect->mEnvelope->DrawPoints( diff --git a/src/menus/FileMenus.cpp b/src/menus/FileMenus.cpp index 235d0d836..f27ca3732 100644 --- a/src/menus/FileMenus.cpp +++ b/src/menus/FileMenus.cpp @@ -532,7 +532,7 @@ void OnPrint(const CommandContext &context) auto &project = context.project; auto name = project.GetName(); auto tracks = project.GetTracks(); - HandlePrint(&project, name, tracks); + HandlePrint(&project, name, tracks, *project.GetTrackPanel()); } void OnExit(const CommandContext &WXUNUSED(context) )