17
17
using DispatcherQueueTimer = Microsoft . UI . Dispatching . DispatcherQueueTimer ;
18
18
using static Files . App . Constants ;
19
19
using Microsoft . UI . Dispatching ;
20
- using Files . App . Data . EventArguments ;
21
20
22
21
namespace Files . App . Views . LayoutModes
23
22
{
@@ -223,14 +222,29 @@ protected override void FileList_SelectionChanged(object sender, SelectionChange
223
222
presenter ! . Background = this . Resources [ "ListViewItemBackgroundSelected" ] as SolidColorBrush ;
224
223
}
225
224
226
- if ( SelectedItems ? . Count > 1 || SelectedItem ? . PrimaryItemAttribute is StorageItemTypes . File )
225
+ if ( SelectedItems ? . Count == 1 && SelectedItem ? . PrimaryItemAttribute is StorageItemTypes . Folder && openedFolderPresenter != FileList . ContainerFromItem ( SelectedItem ) )
227
226
{
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 ( ) ;
231
238
}
232
239
}
233
240
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
+
234
248
private void FileList_RightTapped ( object sender , RightTappedRoutedEventArgs e )
235
249
{
236
250
if ( ! IsRenamingItem )
@@ -242,21 +256,6 @@ private void HandleRightClick(object sender, RightTappedRoutedEventArgs e)
242
256
HandleRightClick ( e . OriginalSource ) ;
243
257
}
244
258
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
-
260
259
protected override async void FileList_PreviewKeyDown ( object sender , KeyRoutedEventArgs e )
261
260
{
262
261
if
0 commit comments