mirror of
https://github.com/cookiengineer/audacity
synced 2025-06-23 07:40:05 +02:00
Bug1426: Update mixer board for change of set of selected tracks
This commit is contained in:
parent
21431d1982
commit
ee7b3b2b89
@ -776,19 +776,16 @@ void MixerTrackCluster::OnPaint(wxPaintEvent & WXUNUSED(event))
|
||||
wxRect bev(0, 0, clusterSize.GetWidth() - 1, clusterSize.GetHeight() - 1);
|
||||
|
||||
#ifdef EXPERIMENTAL_MIDI_OUT
|
||||
if (mTrack->GetSelected())
|
||||
auto selected = mTrack->GetSelected();
|
||||
#else
|
||||
if (mLeftTrack->GetSelected())
|
||||
auto selected = mLeftTrack->GetSelected();
|
||||
#endif
|
||||
|
||||
for (unsigned int i = 0; i < 4; i++) // 4 gives a big bevel, but there were complaints about visibility otherwise.
|
||||
{
|
||||
for (unsigned int i = 0; i < 4; i++) // 4 gives a big bevel, but there were complaints about visibility otherwise.
|
||||
{
|
||||
bev.Inflate(-1, -1);
|
||||
AColor::Bevel(dc, false, bev);
|
||||
}
|
||||
bev.Inflate(-1, -1);
|
||||
AColor::Bevel(dc, !selected, bev);
|
||||
}
|
||||
else
|
||||
AColor::Bevel(dc, true, bev);
|
||||
}
|
||||
|
||||
|
||||
|
@ -822,7 +822,7 @@ void TrackPanel::SelectNone()
|
||||
TrackListIterator iter(mTracks);
|
||||
Track *t = iter.First();
|
||||
while (t) {
|
||||
t->SetSelected(false);
|
||||
SelectTrack(t, false, false);
|
||||
t = iter.Next();
|
||||
}
|
||||
}
|
||||
@ -1196,6 +1196,10 @@ bool TrackPanel::HandleEscapeKey(bool down)
|
||||
}
|
||||
mLastPickedTrack = mInitialLastPickedTrack;
|
||||
mViewInfo->selectedRegion = mInitialSelection;
|
||||
|
||||
// Refresh mixer board for change of set of selected tracks
|
||||
if (MixerBoard* pMixerBoard = this->GetMixerBoard())
|
||||
pMixerBoard->Refresh();
|
||||
}
|
||||
break;
|
||||
case IsZooming:
|
||||
@ -1845,18 +1849,28 @@ void TrackPanel::HandleSelect(wxMouseEvent & event)
|
||||
SelectionHandleDrag(event, t);
|
||||
}
|
||||
|
||||
void TrackPanel::SelectTrack(Track *pTrack, bool selected)
|
||||
void TrackPanel::SelectTrack(Track *pTrack, bool selected, bool updateLastPicked)
|
||||
{
|
||||
bool wasCorrect = (selected == pTrack->GetSelected());
|
||||
|
||||
if (selected) {
|
||||
// This handles the case of linked tracks, selecting all channels
|
||||
mTracks->Select(pTrack, true);
|
||||
mLastPickedTrack = pTrack;
|
||||
if (updateLastPicked)
|
||||
mLastPickedTrack = pTrack;
|
||||
}
|
||||
else {
|
||||
mTracks->Select(pTrack, false);
|
||||
if (pTrack == mLastPickedTrack)
|
||||
if (updateLastPicked && pTrack == mLastPickedTrack)
|
||||
mLastPickedTrack = nullptr;
|
||||
}
|
||||
|
||||
// Update mixer board, but only as needed so it does not flicker.
|
||||
if (!wasCorrect) {
|
||||
MixerBoard* pMixerBoard = this->GetMixerBoard();
|
||||
if (pMixerBoard && (pTrack->GetKind() == Track::Wave))
|
||||
pMixerBoard->RefreshTrackCluster(static_cast<WaveTrack*>(pTrack));
|
||||
}
|
||||
}
|
||||
|
||||
void TrackPanel::SelectRangeOfTracks(Track *sTrack, Track *eTrack)
|
||||
@ -1870,7 +1884,7 @@ void TrackPanel::SelectRangeOfTracks(Track *sTrack, Track *eTrack)
|
||||
TrackListIterator iter(mTracks);
|
||||
sTrack = iter.StartWith(sTrack);
|
||||
do {
|
||||
mTracks->Select(sTrack);
|
||||
SelectTrack(sTrack, true);
|
||||
if (sTrack == eTrack) {
|
||||
break;
|
||||
}
|
||||
@ -2405,7 +2419,7 @@ void TrackPanel::MoveSnappingFreqSelection (int mouseYCoordinate,
|
||||
|
||||
mFreqSelTrack = wt;
|
||||
// SelectNone();
|
||||
// mTracks->Select(pTrack);
|
||||
// SelectTrack(pTrack, true);
|
||||
SetFocusedTrack(pTrack);
|
||||
}
|
||||
}
|
||||
@ -4972,9 +4986,6 @@ void TrackPanel::HandleLabelClick(wxMouseEvent & event)
|
||||
if (event.ShiftDown()) {
|
||||
SelectTrack(t, !t->GetSelected());
|
||||
Refresh(false);
|
||||
MixerBoard* pMixerBoard = this->GetMixerBoard();
|
||||
if (pMixerBoard && (t->GetKind() == Track::Wave))
|
||||
pMixerBoard->RefreshTrackCluster((WaveTrack*)t);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -7261,7 +7272,7 @@ void TrackPanel::OnPrevTrack( bool shift )
|
||||
pSelected = p->GetSelected();
|
||||
if( tSelected && pSelected )
|
||||
{
|
||||
mTracks->Select( t, false );
|
||||
SelectTrack(t, false, false);
|
||||
SetFocusedTrack( p ); // move focus to next track down
|
||||
EnsureVisible( p );
|
||||
MakeParentModifyState(false);
|
||||
@ -7269,7 +7280,7 @@ void TrackPanel::OnPrevTrack( bool shift )
|
||||
}
|
||||
if( tSelected && !pSelected )
|
||||
{
|
||||
mTracks->Select( p, true );
|
||||
SelectTrack(p, true, false);
|
||||
SetFocusedTrack( p ); // move focus to next track down
|
||||
EnsureVisible( p );
|
||||
MakeParentModifyState(false);
|
||||
@ -7277,7 +7288,7 @@ void TrackPanel::OnPrevTrack( bool shift )
|
||||
}
|
||||
if( !tSelected && pSelected )
|
||||
{
|
||||
mTracks->Select( p, false );
|
||||
SelectTrack(p, false, false);
|
||||
SetFocusedTrack( p ); // move focus to next track down
|
||||
EnsureVisible( p );
|
||||
MakeParentModifyState(false);
|
||||
@ -7285,7 +7296,7 @@ void TrackPanel::OnPrevTrack( bool shift )
|
||||
}
|
||||
if( !tSelected && !pSelected )
|
||||
{
|
||||
mTracks->Select( t, true );
|
||||
SelectTrack(t, true, false);
|
||||
SetFocusedTrack( p ); // move focus to next track down
|
||||
EnsureVisible( p );
|
||||
MakeParentModifyState(false);
|
||||
@ -7367,7 +7378,7 @@ void TrackPanel::OnNextTrack( bool shift )
|
||||
nSelected = n->GetSelected();
|
||||
if( tSelected && nSelected )
|
||||
{
|
||||
mTracks->Select( t, false );
|
||||
SelectTrack(t, false, false);
|
||||
SetFocusedTrack( n ); // move focus to next track down
|
||||
EnsureVisible( n );
|
||||
MakeParentModifyState(false);
|
||||
@ -7375,7 +7386,7 @@ void TrackPanel::OnNextTrack( bool shift )
|
||||
}
|
||||
if( tSelected && !nSelected )
|
||||
{
|
||||
mTracks->Select( n, true );
|
||||
SelectTrack(n, true, false);
|
||||
SetFocusedTrack( n ); // move focus to next track down
|
||||
EnsureVisible( n );
|
||||
MakeParentModifyState(false);
|
||||
@ -7383,7 +7394,7 @@ void TrackPanel::OnNextTrack( bool shift )
|
||||
}
|
||||
if( !tSelected && nSelected )
|
||||
{
|
||||
mTracks->Select( n, false );
|
||||
SelectTrack(n, false, false);
|
||||
SetFocusedTrack( n ); // move focus to next track down
|
||||
EnsureVisible( n );
|
||||
MakeParentModifyState(false);
|
||||
@ -7391,7 +7402,7 @@ void TrackPanel::OnNextTrack( bool shift )
|
||||
}
|
||||
if( !tSelected && !nSelected )
|
||||
{
|
||||
mTracks->Select( t, true );
|
||||
SelectTrack(t, true, false);
|
||||
SetFocusedTrack( n ); // move focus to next track down
|
||||
EnsureVisible( n );
|
||||
MakeParentModifyState(false);
|
||||
|
@ -291,7 +291,7 @@ class AUDACITY_DLL_API TrackPanel final : public OverlayPanel {
|
||||
#endif
|
||||
|
||||
// AS: Selection handling
|
||||
void SelectTrack(Track *track, bool selected);
|
||||
void SelectTrack(Track *track, bool selected, bool updateLastPicked = true);
|
||||
void SelectRangeOfTracks(Track *sTrack, Track *eTrack);
|
||||
virtual void HandleSelect(wxMouseEvent & event);
|
||||
virtual void SelectionHandleDrag(wxMouseEvent &event, Track *pTrack);
|
||||
|
Loading…
x
Reference in New Issue
Block a user