1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-15 15:49:36 +02:00

Bug 2547 - Shift + Click may select incorrect tracks

This commit is contained in:
Leland Lucius 2021-02-12 10:12:08 -06:00
parent 7392e8b619
commit 0c234359af

View File

@ -170,6 +170,10 @@ void DoPrevTrack(
{ {
auto range = tracks.Leaders(); auto range = tracks.Leaders();
p = * range.rbegin(); // null if range is empty p = * range.rbegin(); // null if range is empty
// Deselect all other tracks and select this one.
selectionState.SelectNone( tracks );
selectionState.SelectTrack( *p, true, true );
trackFocus.Set( p ); // Wrap to the last track trackFocus.Set( p ); // Wrap to the last track
if (p) if (p)
p->EnsureVisible( true ); p->EnsureVisible( true );
@ -183,6 +187,9 @@ void DoPrevTrack(
} }
else else
{ {
// Deselect all other tracks and select this one.
selectionState.SelectNone( tracks );
selectionState.SelectTrack( *p, true, true );
trackFocus.Set( p ); // move focus to next track up trackFocus.Set( p ); // move focus to next track up
p->EnsureVisible( true ); p->EnsureVisible( true );
return; return;
@ -205,6 +212,9 @@ void DoNextTrack(
if( t == NULL ) // if there isn't one, focus on first if( t == NULL ) // if there isn't one, focus on first
{ {
t = *tracks.Any().begin(); t = *tracks.Any().begin();
// Deselect all other tracks and select this one.
selectionState.SelectNone( tracks );
selectionState.SelectTrack( *t, true, true );
trackFocus.Set( t ); trackFocus.Set( t );
if (t) if (t)
t->EnsureVisible( true ); t->EnsureVisible( true );
@ -273,6 +283,10 @@ void DoNextTrack(
if( circularTrackNavigation ) if( circularTrackNavigation )
{ {
n = *tracks.Any().begin(); n = *tracks.Any().begin();
// Deselect all other tracks and select this one.
selectionState.SelectNone( tracks );
selectionState.SelectTrack( *n, true, true );
trackFocus.Set( n ); // Wrap to the first track trackFocus.Set( n ); // Wrap to the first track
if (n) if (n)
n->EnsureVisible( true ); n->EnsureVisible( true );
@ -286,6 +300,9 @@ void DoNextTrack(
} }
else else
{ {
// Deselect all other tracks and select this one.
selectionState.SelectNone( tracks );
selectionState.SelectTrack( *n, true, true );
trackFocus.Set( n ); // move focus to next track down trackFocus.Set( n ); // move focus to next track down
n->EnsureVisible( true ); n->EnsureVisible( true );
return; return;