1717using DispatcherQueueTimer = Microsoft . UI . Dispatching . DispatcherQueueTimer ;
1818using static Files . App . Constants ;
1919using Microsoft . UI . Dispatching ;
20- using Files . App . Data . EventArguments ;
2120
2221namespace Files . App . Views . LayoutModes
2322{
@@ -223,14 +222,29 @@ protected override void FileList_SelectionChanged(object sender, SelectionChange
223222 presenter ! . Background = this . Resources [ "ListViewItemBackgroundSelected" ] as SolidColorBrush ;
224223 }
225224
226- if ( SelectedItems ? . Count > 1 || SelectedItem ? . PrimaryItemAttribute is StorageItemTypes . File )
225+ if ( SelectedItems ? . Count == 1 && SelectedItem ? . PrimaryItemAttribute is StorageItemTypes . Folder && openedFolderPresenter != FileList . ContainerFromItem ( SelectedItem ) )
227226 {
228- var currentBladeIndex = ( ParentShellPageInstance is ColumnShellPage associatedColumnShellPage ) ? associatedColumnShellPage . ColumnParams . Column : 0 ;
229- this . FindAscendant < ColumnViewBrowser > ( ) ? . DismissOtherBlades ( currentBladeIndex ) ;
230- ClearOpenedFolderSelectionIndicator ( ) ;
227+ if ( UserSettingsService . FoldersSettingsService . ColumnLayoutOpenFoldersWithOneClick )
228+ ItemInvoked ? . Invoke ( new ColumnParam { Source = this , NavPathParam = ( SelectedItem is ShortcutItem sht ? sht . TargetPath : SelectedItem . ItemPath ) , ListView = FileList } , EventArgs . Empty ) ;
229+ else
230+ CloseFolder ( ) ;
231+ }
232+ else if ( SelectedItems ? . Count > 1
233+ || SelectedItem ? . PrimaryItemAttribute is StorageItemTypes . File
234+ || openedFolderPresenter != null && ParentShellPageInstance != null &&
235+ ! ParentShellPageInstance . FilesystemViewModel . FilesAndFolders . Contains ( FileList . ItemFromContainer ( openedFolderPresenter ) ) )
236+ {
237+ CloseFolder ( ) ;
231238 }
232239 }
233240
241+ private void CloseFolder ( )
242+ {
243+ var currentBladeIndex = ( ParentShellPageInstance is ColumnShellPage associatedColumnShellPage ) ? associatedColumnShellPage . ColumnParams . Column : 0 ;
244+ this . FindAscendant < ColumnViewBrowser > ( ) ? . DismissOtherBlades ( currentBladeIndex ) ;
245+ ClearOpenedFolderSelectionIndicator ( ) ;
246+ }
247+
234248 private void FileList_RightTapped ( object sender , RightTappedRoutedEventArgs e )
235249 {
236250 if ( ! IsRenamingItem )
@@ -242,21 +256,6 @@ private void HandleRightClick(object sender, RightTappedRoutedEventArgs e)
242256 HandleRightClick ( e . OriginalSource ) ;
243257 }
244258
245- private void FileList_PreviewKeyUp ( object sender , KeyRoutedEventArgs e )
246- {
247- if
248- (
249- IsRenamingItem ||
250- ! ( e . Key is VirtualKey . Up or VirtualKey . Down or VirtualKey . Right ) ||
251- SelectedItems ? . Count > 1
252- )
253- return ;
254-
255- // Open selected directory
256- if ( IsItemSelected && SelectedItem ? . PrimaryItemAttribute == StorageItemTypes . Folder )
257- ItemInvoked ? . Invoke ( new ColumnParam { Source = this , NavPathParam = ( SelectedItem is ShortcutItem sht ? sht . TargetPath : SelectedItem . ItemPath ) , ListView = FileList } , EventArgs . Empty ) ;
258- }
259-
260259 protected override async void FileList_PreviewKeyDown ( object sender , KeyRoutedEventArgs e )
261260 {
262261 if
0 commit comments