@@ -1008,6 +1008,7 @@ protected virtual void Page_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
10081008 var key = e . Key ;
10091009 var filter = ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter ;
10101010 bool isShiftDown = InputKeyboardSource . GetKeyStateForCurrentThread ( VirtualKey . Shift ) . HasFlag ( CoreVirtualKeyStates . Down ) ;
1011+ bool isFilteringEnabled = FoldersSettingsService . KeyboardTypingBehavior == KeyboardTypingBehavior . FilterItems ;
10111012
10121013 // OEM codes
10131014 bool isOemMinus = ( int ) key == ( int ) Keys . OemMinus ;
@@ -1026,31 +1027,33 @@ protected virtual void Page_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
10261027 {
10271028 string typedChar = char . ToLowerInvariant ( ch ) . ToString ( ) ;
10281029
1029- if ( FoldersSettingsService . KeyboardTypingBehavior == KeyboardTypingBehavior . FilterItems )
1030+ if ( isFilteringEnabled )
10301031 {
10311032 if ( ! GeneralSettingsService . ShowFilterHeader )
10321033 GeneralSettingsService . ShowFilterHeader = true ;
10331034
10341035 ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter += typedChar ;
10351036 }
1036-
1037- JumpString += typedChar ;
1038- }
1039- else if ( key == VirtualKey . Space && ! string . IsNullOrEmpty ( filter ) &&
1040- FoldersSettingsService . KeyboardTypingBehavior == KeyboardTypingBehavior . FilterItems )
1041- {
1042- ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter += " " ;
1037+ else
1038+ {
1039+ JumpString += typedChar ;
1040+ return ;
1041+ }
10431042 }
1044- else if ( key == VirtualKey . Back && ! string . IsNullOrEmpty ( filter ) &&
1045- FoldersSettingsService . KeyboardTypingBehavior == KeyboardTypingBehavior . FilterItems )
1043+ else if ( isFilteringEnabled && ! string . IsNullOrEmpty ( filter ) )
10461044 {
1047- ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter = filter [ ..^ 1 ] ;
1048-
1049- if ( string . IsNullOrEmpty ( ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter ) )
1045+ if ( key == VirtualKey . Space )
1046+ ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter += " " ;
1047+ else if ( key == VirtualKey . Back && filter . Length > 1 )
1048+ ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter = filter [ ..^ 1 ] ;
1049+ else if ( key == VirtualKey . Back && filter . Length == 1 )
1050+ {
1051+ ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter = string . Empty ;
10501052 GeneralSettingsService . ShowFilterHeader = false ;
1053+ }
10511054 }
10521055
1053- if ( UserSettingsService . FoldersSettingsService . KeyboardTypingBehavior == KeyboardTypingBehavior . FilterItems )
1056+ if ( isFilteringEnabled )
10541057 {
10551058 var jumpedToItem = ParentShellPageInstance ! . ShellViewModel . FilesAndFolders
10561059 . FirstOrDefault ( f => f . Name ? . Contains ( ParentShellPageInstance . ShellViewModel . FilesAndFoldersFilter , StringComparison . OrdinalIgnoreCase ) == true ) ;
0 commit comments