mirror of
https://github.com/cookiengineer/audacity
synced 2026-01-15 17:11:23 +01:00
Change details of focusing of tracks in presence of pending ones...
... Don't focus a pending changed track but remap it to the original. You can focus a pending added track.
This commit is contained in:
@@ -2866,15 +2866,15 @@ void TrackPanel::SetFocusedTrack( Track *t )
|
|||||||
if (t && !t->GetLinked() && t->GetLink())
|
if (t && !t->GetLinked() && t->GetLink())
|
||||||
t = (WaveTrack*)t->GetLink();
|
t = (WaveTrack*)t->GetLink();
|
||||||
|
|
||||||
if (t && AudacityProject::GetKeyboardCaptureHandler()) {
|
if ( !mAx->SetFocus( Track::Pointer( t ) ) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (t && AudacityProject::GetKeyboardCaptureHandler())
|
||||||
AudacityProject::ReleaseKeyboard(this);
|
AudacityProject::ReleaseKeyboard(this);
|
||||||
}
|
|
||||||
|
|
||||||
if (t) {
|
if (t)
|
||||||
AudacityProject::CaptureKeyboard(this);
|
AudacityProject::CaptureKeyboard(this);
|
||||||
}
|
|
||||||
|
|
||||||
mAx->SetFocus( Track::Pointer( t ) );
|
|
||||||
Refresh( false );
|
Refresh( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -131,8 +131,14 @@ bool TrackPanelAx::IsFocused( Track *track )
|
|||||||
if( !focusedTrack )
|
if( !focusedTrack )
|
||||||
focusedTrack = SetFocus();
|
focusedTrack = SetFocus();
|
||||||
|
|
||||||
|
// Remap track pointer if there are oustanding pending updates
|
||||||
|
auto origTrack =
|
||||||
|
mTrackPanel->GetTracks()->FindById( track->GetId() );
|
||||||
|
if (origTrack)
|
||||||
|
track = origTrack;
|
||||||
|
|
||||||
if( ( track == focusedTrack.get() ) ||
|
if( ( track == focusedTrack.get() ) ||
|
||||||
( track == focusedTrack->GetLink() ) )
|
( focusedTrack && track == focusedTrack->GetLink() ) )
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -142,6 +148,8 @@ bool TrackPanelAx::IsFocused( Track *track )
|
|||||||
|
|
||||||
int TrackPanelAx::TrackNum( const std::shared_ptr<Track> &target )
|
int TrackPanelAx::TrackNum( const std::shared_ptr<Track> &target )
|
||||||
{
|
{
|
||||||
|
// Find 1-based position of the target in the visible tracks, or 0 if not
|
||||||
|
// found
|
||||||
TrackListIterator iter( mTrackPanel->GetTracks() );
|
TrackListIterator iter( mTrackPanel->GetTracks() );
|
||||||
Track *t = iter.First();
|
Track *t = iter.First();
|
||||||
int ndx = 0;
|
int ndx = 0;
|
||||||
|
|||||||
Reference in New Issue
Block a user