diff --git a/Source/Editor/GUI/Timeline/Timeline.cs b/Source/Editor/GUI/Timeline/Timeline.cs index 556c4dcdb..8dabba251 100644 --- a/Source/Editor/GUI/Timeline/Timeline.cs +++ b/Source/Editor/GUI/Timeline/Timeline.cs @@ -1446,6 +1446,17 @@ namespace FlaxEditor.GUI.Timeline { GetTracks(SelectedTracks[i], tracks); } + + // Find the lowest track position for selection + int lowestTrackLocation = Tracks.Count - 1; + for (int i = 0; i < tracks.Count; i++) + { + var trackToDelete = tracks[i]; + if (trackToDelete.TrackIndex < lowestTrackLocation) + { + lowestTrackLocation = trackToDelete.TrackIndex; + } + } SelectedTracks.Clear(); if (withUndo && Undo != null && Undo.Enabled) { @@ -1468,6 +1479,18 @@ namespace FlaxEditor.GUI.Timeline } OnTracksChanged(); MarkAsEdited(); + + // Select track above deleted tracks unless track is first track + if (Tracks.Count > 0) + { + if (lowestTrackLocation - 1 >= 0) + Select(Tracks[lowestTrackLocation - 1]); + else + Select(Tracks[0]); + + SelectedTracks[0].Focus(); + } + } /// @@ -1655,6 +1678,14 @@ namespace FlaxEditor.GUI.Timeline } OnTracksChanged(); MarkAsEdited(); + + // Deselect and select new clones. + Deselect(); + foreach (var clone in clones) + { + Select(clone, true); + } + SelectedTracks[0].Focus(); } diff --git a/Source/Editor/GUI/Timeline/Undo/AddRemoveTrackAction.cs b/Source/Editor/GUI/Timeline/Undo/AddRemoveTrackAction.cs index dfdb911b3..51a832eeb 100644 --- a/Source/Editor/GUI/Timeline/Undo/AddRemoveTrackAction.cs +++ b/Source/Editor/GUI/Timeline/Undo/AddRemoveTrackAction.cs @@ -61,6 +61,9 @@ namespace FlaxEditor.GUI.Timeline.Undo _timeline.AddTrack(track, false); track.TrackIndex = _order; _timeline.OnTracksOrderChanged(); + _timeline.Focus(); + _timeline.Select(track); + track.Focus(); } private void Remove() @@ -68,10 +71,11 @@ namespace FlaxEditor.GUI.Timeline.Undo var track = _timeline.FindTrack(_name); if (track == null) { - Editor.LogWarning($"Cannot remove track {_name}. It doesn't already exists."); + Editor.LogWarning($"Cannot remove track {_name}. It doesn't exist."); return; } _timeline.Delete(track, false); + _timeline.Focus(); } public string ActionString => _isAdd ? "Add track" : "Remove track";