Double-click on stereo channel separator makes heights equal

This commit is contained in:
Paul Licameli 2019-12-31 16:00:39 -05:00
parent 45a0ce1819
commit f1e5e96480
1 changed files with 27 additions and 4 deletions

View File

@ -35,7 +35,8 @@ HitTestPreview TrackPanelResizeHandle::HitPreview(bool bLinked)
// is shorter when it is between stereo tracks).
return {
XO("Click and drag to adjust relative size of stereo tracks."),
XO(
"Click and drag to adjust relative size of stereo tracks, double-click to make heights equal"),
&resizeCursor
};
}
@ -51,10 +52,32 @@ TrackPanelResizeHandle::~TrackPanelResizeHandle()
{
}
UIHandle::Result TrackPanelResizeHandle::Click
(const TrackPanelMouseEvent &WXUNUSED(evt), AudacityProject *WXUNUSED(pProject))
UIHandle::Result TrackPanelResizeHandle::Click(
const TrackPanelMouseEvent &evt, AudacityProject *pProject )
{
return RefreshCode::RefreshNone;
using namespace RefreshCode;
if ( evt.event.LeftDClick() && mMode == IsResizingBetweenLinkedTracks ) {
auto &tracks = TrackList::Get( *pProject );
auto pTrack = tracks.Lock(mpTrack);
if (pTrack &&
!TrackView::Get(*pTrack).GetMinimized()) {
auto range = TrackList::Channels( pTrack.get() );
auto size = range.size();
auto height = range.sum( [](const Track *pTrack){
return TrackView::Get(*pTrack).GetHeight(); } );
int ii = 1;
int coord = 0;
for ( const auto channel : range ) {
int newCoord = ((double)ii++ /size) * height;
TrackView::Get(*channel).SetHeight( newCoord - coord );
coord = newCoord;
}
ProjectHistory::Get( *pProject ).ModifyState(false);
// Do not start a drag
return Cancelled | RefreshAll;
}
}
return RefreshNone;
}
TrackPanelResizeHandle::TrackPanelResizeHandle