@@ -26,6 +26,7 @@ public ColumnViewBase() : base()
2626 this . InitializeComponent ( ) ;
2727 var selectionRectangle = RectangleSelection . Create ( FileList , SelectionRectangle , FileList_SelectionChanged ) ;
2828 selectionRectangle . SelectionEnded += SelectionRectangle_SelectionEnded ;
29+ tapDebounceTimer = DispatcherQueue . GetForCurrentThread ( ) . CreateTimer ( ) ;
2930 }
3031
3132 protected override void HookEvents ( )
@@ -147,6 +148,11 @@ private void ListViewTextBoxItemName_TextChanged(object sender, TextChangedEvent
147148
148149 protected override void OnNavigatedTo ( NavigationEventArgs eventArgs )
149150 {
151+ if ( eventArgs . Parameter is NavigationArguments navArgs )
152+ {
153+ // Focus filelist only if first column
154+ navArgs . FocusOnNavigation = ( navArgs . AssociatedTabInstance as ColumnShellPage ) ? . ColumnParams ? . Column == 0 ;
155+ }
150156 base . OnNavigatedTo ( eventArgs ) ;
151157 }
152158
@@ -336,6 +342,26 @@ private void HandleRightClick(object sender, RightTappedRoutedEventArgs e)
336342 ItemManipulationModel . SetSelectedItem ( objectPressed ) ;
337343 }
338344
345+ private DispatcherQueueTimer tapDebounceTimer ;
346+
347+ private void FileList_PreviewKeyUp ( object sender , KeyRoutedEventArgs e )
348+ {
349+ // Open selected directory
350+ tapDebounceTimer . Stop ( ) ;
351+ if ( IsItemSelected && SelectedItem . PrimaryItemAttribute == StorageItemTypes . Folder )
352+ {
353+ var currItem = SelectedItem ;
354+ tapDebounceTimer . Debounce ( ( ) =>
355+ {
356+ if ( currItem == SelectedItem )
357+ {
358+ ItemInvoked ? . Invoke ( new ColumnParam { NavPathParam = ( SelectedItem is ShortcutItem sht ? sht . TargetPath : SelectedItem . ItemPath ) , ListView = FileList } , EventArgs . Empty ) ;
359+ }
360+ tapDebounceTimer . Stop ( ) ;
361+ } , TimeSpan . FromMilliseconds ( 200 ) ) ;
362+ }
363+ }
364+
339365 private async void FileList_PreviewKeyDown ( object sender , KeyRoutedEventArgs e )
340366 {
341367 var ctrlPressed = Window . Current . CoreWindow . GetKeyState ( VirtualKey . Control ) . HasFlag ( CoreVirtualKeyStates . Down ) ;
@@ -382,7 +408,7 @@ private async void FileList_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
382408 else if ( e . Key == VirtualKey . Up || e . Key == VirtualKey . Down )
383409 {
384410 // If list has only one item, select it on arrow down/up (#5681)
385- if ( ! IsItemSelected && FileList . Items . Count == 1 )
411+ if ( ! IsItemSelected )
386412 {
387413 FileList . SelectedIndex = 0 ;
388414 e . Handled = true ;
@@ -399,14 +425,11 @@ private async void FileList_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
399425 e . Handled = true ;
400426 }
401427 }
402- else if ( e . Key == VirtualKey . Right ) // Right arrow: open selected folder
428+ else if ( e . Key == VirtualKey . Right ) // Right arrow: switch focus to next column
403429 {
404430 if ( ! IsRenamingItem && ! ParentShellPageInstance . NavToolbarViewModel . IsEditModeEnabled )
405431 {
406- if ( IsItemSelected && SelectedItem . PrimaryItemAttribute == StorageItemTypes . Folder )
407- {
408- ItemInvoked ? . Invoke ( new ColumnParam { NavPathParam = ( SelectedItem is ShortcutItem sht ? sht . TargetPath : SelectedItem . ItemPath ) , ListView = FileList } , EventArgs . Empty ) ;
409- }
432+ FocusManager . TryMoveFocus ( FocusNavigationDirection . Next ) ;
410433 e . Handled = true ;
411434 }
412435 }
0 commit comments