@@ -211,26 +211,31 @@ fn update_edit_mode_for_seek(ui: &AppWindow, position: Duration) {
211211 return ;
212212 }
213213
214- // Find the segment under the playhead first
215- let segment_under_playhead = with_history_manager ( |state| {
216- for ( track_idx, track) in state. tracks_manager . iter ( ) . enumerate ( ) {
217- for ( seg_idx, segment) in track. segments ( ) . iter ( ) . enumerate ( ) {
218- let seg_start = segment. timeline_offset ;
219- let seg_end = seg_start + segment. duration ;
220- if position >= seg_start && position < seg_end {
221- return Some ( ( track_idx, seg_idx) ) ;
214+ let edited_track_index = global_store ! ( ui) . get_video_editor_current_edited_track_index ( ) ;
215+
216+ let edited_segment_at_position = if edited_track_index >= 0 {
217+ with_history_manager ( |state| {
218+ if let Some ( track) = state. tracks_manager . iter ( ) . nth ( edited_track_index as usize ) {
219+ for ( seg_idx, segment) in track. segments ( ) . iter ( ) . enumerate ( ) {
220+ let seg_start = segment. timeline_offset ;
221+ let seg_end = seg_start + segment. duration ;
222+ if position >= seg_start && position < seg_end {
223+ return Some ( ( edited_track_index as usize , seg_idx) ) ;
224+ }
222225 }
223226 }
224- }
227+ None
228+ } )
229+ } else {
225230 None
226- } ) ;
231+ } ;
227232
228- // Check if the segment under playhead is selected
229- let is_edit_mode = if let Some ( ( track_idx, seg_idx) ) = segment_under_playhead {
233+ // Check if the edited segment is selected
234+ let is_edit_mode = if let Some ( ( track_idx, seg_idx) ) = edited_segment_at_position {
230235 let selected_segments = get_selected_segment_indices ( ui) ;
231236 selected_segments. contains ( & ( track_idx, seg_idx) )
232237 } else {
233- false
238+ false // Edited track has no segment at this position
234239 } ;
235240
236241 global_ve_filter ! ( ui) . set_is_in_edit_mode ( is_edit_mode) ;
0 commit comments