1
0
mirror of https://github.com/cookiengineer/audacity synced 2026-03-31 11:35:50 +02:00

Break cycle: TrackPanelResizerCell, TrackPanelResizeHandle, TrackView

This commit is contained in:
Paul Licameli
2019-07-09 14:45:42 -04:00
parent 586eb0d4cb
commit db16150366
6 changed files with 43 additions and 35 deletions

View File

@@ -26,8 +26,8 @@ Paul Licameli split from TrackPanel.cpp
#include <wx/mousestate.h>
TrackPanelResizerCell::TrackPanelResizerCell(
const std::shared_ptr<TrackView> &pView )
: mwView{ pView }
const std::shared_ptr<Track> &pTrack )
: mwTrack{ pTrack }
{}
std::vector<UIHandlePtr> TrackPanelResizerCell::HitTest
@@ -47,10 +47,7 @@ std::vector<UIHandlePtr> TrackPanelResizerCell::HitTest
std::shared_ptr<Track> TrackPanelResizerCell::DoFindTrack()
{
const auto pView = mwView.lock();
if ( pView )
return pView->FindTrack();
return {};
return mwTrack.lock();
}
void TrackPanelResizerCell::Draw(
@@ -112,3 +109,20 @@ void TrackPanelResizerCell::Draw(
}
}
}
static const AttachedTrackObjects::RegisteredFactory key{
[]( Track &track ){
return std::make_shared<TrackPanelResizerCell>(
track.shared_from_this() );
}
};
TrackPanelResizerCell &TrackPanelResizerCell::Get( Track &track )
{
return track.AttachedObjects::Get< TrackPanelResizerCell >( key );
}
const TrackPanelResizerCell &TrackPanelResizerCell::Get( const Track &track )
{
return Get( const_cast< Track & >( track ) );
}