From db57ed8441939ef16696f7e9bd9f31f6f813938f Mon Sep 17 00:00:00 2001 From: Yair <39923744+yaira2@users.noreply.github.com> Date: Sun, 27 Jul 2025 19:05:40 -0400 Subject: [PATCH] Code Quality: Fixed two way binding for filter header --- src/Files.App/ViewModels/ShellViewModel.cs | 15 +++++++++++++-- .../Views/Shells/ModernShellPage.xaml | 2 +- .../Views/Shells/ModernShellPage.xaml.cs | 18 ------------------ 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/Files.App/ViewModels/ShellViewModel.cs b/src/Files.App/ViewModels/ShellViewModel.cs index c96b09ddabd9..f6cf8eec8fa5 100644 --- a/src/Files.App/ViewModels/ShellViewModel.cs +++ b/src/Files.App/ViewModels/ShellViewModel.cs @@ -750,7 +750,18 @@ public void UpdateEmptyTextType() public string? FilesAndFoldersFilter { get => _filesAndFoldersFilter; - set => SetProperty(ref _filesAndFoldersFilter, value); + set + { + if (SetProperty(ref _filesAndFoldersFilter, value)) + { + FilesAndFolderFilterUpdated(); + } + } + } + + private void FilesAndFolderFilterUpdated() + { + _ = ApplyFilesAndFoldersChangesAsync(); } @@ -1867,7 +1878,6 @@ await Task.Run(async () => }); filesAndFolders.AddRange(fileList); - FilesAndFoldersFilter = null; await OrderFilesAndFoldersAsync(); await ApplyFilesAndFoldersChangesAsync(); @@ -1876,6 +1886,7 @@ await dispatcherQueue.EnqueueOrInvokeAsync(() => { GetDesktopIniFileData(); CheckForBackgroundImage(); + FilesAndFoldersFilter = null; }, Microsoft.UI.Dispatching.DispatcherQueuePriority.Low); }); diff --git a/src/Files.App/Views/Shells/ModernShellPage.xaml b/src/Files.App/Views/Shells/ModernShellPage.xaml index 186f94c75e5d..f81f78b46676 100644 --- a/src/Files.App/Views/Shells/ModernShellPage.xaml +++ b/src/Files.App/Views/Shells/ModernShellPage.xaml @@ -125,7 +125,7 @@ VerticalAlignment="Center" PlaceholderText="{helpers:ResourceString Name=Filename}" PreviewKeyDown="FilterTextBox_PreviewKeyDown" - TextChanged="FilterTextBox_TextChanged" /> + Text="{x:Bind ShellViewModel.FilesAndFoldersFilter, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> diff --git a/src/Files.App/Views/Shells/ModernShellPage.xaml.cs b/src/Files.App/Views/Shells/ModernShellPage.xaml.cs index 98282ca8764d..ed83ff0a2f6e 100644 --- a/src/Files.App/Views/Shells/ModernShellPage.xaml.cs +++ b/src/Files.App/Views/Shells/ModernShellPage.xaml.cs @@ -45,7 +45,6 @@ public ModernShellPage() : base(new CurrentInstanceViewModel()) ShellViewModel.PageTypeUpdated += FilesystemViewModel_PageTypeUpdated; ShellViewModel.OnSelectionRequestedEvent += FilesystemViewModel_OnSelectionRequestedEvent; ShellViewModel.GitDirectoryUpdated += FilesystemViewModel_GitDirectoryUpdated; - ShellViewModel.DirectoryInfoUpdated += ShellViewModel_DirectoryInfoUpdated; ShellViewModel.FocusFilterHeader += ShellViewModel_FocusFilterHeader; ToolbarViewModel.PathControlDisplayText = Strings.Home.GetLocalizedResource(); @@ -63,13 +62,6 @@ private async void ShellViewModel_FocusFilterHeader(object sender, EventArgs e) FilterTextBox.Focus(FocusState.Programmatic); } - private void ShellViewModel_DirectoryInfoUpdated(object sender, EventArgs e) - { - // Regular binding causes issues when refreshing the directory so we set the text manually - if (FilterTextBox?.IsLoaded ?? false) - FilterTextBox.Text = ShellViewModel.FilesAndFoldersFilter ?? string.Empty; - } - private void ModernShellPage_RefreshWidgetsRequested(object sender, EventArgs e) { if (ItemDisplayFrame?.Content is HomePage currentPage) @@ -342,16 +334,6 @@ public override void NavigateToPath(string? navigationPath, Type? sourcePageType ToolbarViewModel.PathControlDisplayText = ShellViewModel.WorkingDirectory; } - private async void FilterTextBox_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args) - { - if (args.Reason is AutoSuggestionBoxTextChangeReason.UserInput) - { - ShellViewModel.FilesAndFoldersFilter = sender.Text; - await ShellViewModel.ApplyFilesAndFoldersChangesAsync(); - } - - } - private void FilterTextBox_PreviewKeyDown(object sender, KeyRoutedEventArgs e) { if (e.Key is VirtualKey.Escape &&