From 38bd726dc36ad791f153d6fc8312908724abd07e Mon Sep 17 00:00:00 2001 From: zeyus Date: Mon, 10 Jun 2024 15:08:26 +0200 Subject: [PATCH 1/2] Fixes #481 - Keep selected filter option between application restarts. --- .../Controls/FilterSelector.xaml | 8 ++--- .../Controls/FilterSelector.xaml.cs | 29 ++++++++++++++++--- EverythingToolbar/EverythingSearch.cs | 3 +- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/EverythingToolbar/Controls/FilterSelector.xaml b/EverythingToolbar/Controls/FilterSelector.xaml index 2f5b31b1d..ad3a40c56 100644 --- a/EverythingToolbar/Controls/FilterSelector.xaml +++ b/EverythingToolbar/Controls/FilterSelector.xaml @@ -6,13 +6,13 @@ BorderThickness="0, 0, 0, 1"> + ItemsSource="{Binding DefaultFilters}" + SelectedIndex="-1" /> + DisplayMemberPath="Name" + SelectedIndex="-1" /> diff --git a/EverythingToolbar/Controls/FilterSelector.xaml.cs b/EverythingToolbar/Controls/FilterSelector.xaml.cs index 2e79914cc..36d9162de 100644 --- a/EverythingToolbar/Controls/FilterSelector.xaml.cs +++ b/EverythingToolbar/Controls/FilterSelector.xaml.cs @@ -11,18 +11,29 @@ public FilterSelector() { InitializeComponent(); DataContext = FilterLoader.Instance; - EverythingSearch.Instance.PropertyChanged += OnCurrentFilterChanged; - Loaded += (s, e) => { SelectCurrentFilter(); }; + Loaded += (s, e) => { + SelectCurrentFilter(); + EverythingSearch.Instance.PropertyChanged += OnCurrentFilterChanged; + }; + } + + public int SelectedDefaultFilterIndex + { + get => FilterLoader.Instance.DefaultFilters.IndexOf(EverythingSearch.Instance.CurrentFilter); } + public int SelectedUserFilterIndex + { + get => FilterLoader.Instance.UserFilters.IndexOf(EverythingSearch.Instance.CurrentFilter); + } private void SelectCurrentFilter() { TabControl.SelectionChanged -= OnTabItemSelected; - TabControl.SelectedIndex = FilterLoader.Instance.DefaultFilters.IndexOf(EverythingSearch.Instance.CurrentFilter); + TabControl.SelectedIndex = SelectedDefaultFilterIndex; TabControl.SelectionChanged += OnTabItemSelected; ComboBox.SelectionChanged -= OnComboBoxItemSelected; - ComboBox.SelectedIndex = FilterLoader.Instance.UserFilters.IndexOf(EverythingSearch.Instance.CurrentFilter); + ComboBox.SelectedIndex = SelectedUserFilterIndex; ComboBox.SelectionChanged += OnComboBoxItemSelected; } @@ -39,6 +50,11 @@ private void OnTabItemSelected(object sender, SelectionChangedEventArgs e) if (TabControl.SelectedIndex < 0) return; + if (!TabControl.IsFocused && !TabControl.IsMouseOver) { + TabControl.SelectedIndex = -1; + return; + } + EverythingSearch.Instance.CurrentFilter = TabControl.SelectedItem as Filter; } @@ -47,6 +63,11 @@ private void OnComboBoxItemSelected(object sender, SelectionChangedEventArgs e) if (ComboBox.SelectedIndex < 0) return; + if (!ComboBox.IsFocused && !ComboBox.IsMouseOver) { + ComboBox.SelectedIndex = -1; + return; + } + EverythingSearch.Instance.CurrentFilter = ComboBox.SelectedItem as Filter; } } diff --git a/EverythingToolbar/EverythingSearch.cs b/EverythingToolbar/EverythingSearch.cs index f1f053e68..5bc20bafe 100644 --- a/EverythingToolbar/EverythingSearch.cs +++ b/EverythingToolbar/EverythingSearch.cs @@ -68,12 +68,13 @@ public Filter CurrentFilter return; _currentFilter = value; + Settings.Default.lastFilter = value.Name; lock (_lock) SearchResults.Clear(); QueryBatch(append: false); - NotifyPropertyChanged(); + NotifyPropertyChanged("CurrentFilter"); } } From fcb0e2849d6b8ef40f0313cce961b9db4ec17704 Mon Sep 17 00:00:00 2001 From: zeyus Date: Wed, 12 Jun 2024 11:52:22 +0200 Subject: [PATCH 2/2] Remove explicit property name in NotifyPropertyChanged() call. --- EverythingToolbar/EverythingSearch.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EverythingToolbar/EverythingSearch.cs b/EverythingToolbar/EverythingSearch.cs index 5bc20bafe..b0354534f 100644 --- a/EverythingToolbar/EverythingSearch.cs +++ b/EverythingToolbar/EverythingSearch.cs @@ -74,7 +74,7 @@ public Filter CurrentFilter SearchResults.Clear(); QueryBatch(append: false); - NotifyPropertyChanged("CurrentFilter"); + NotifyPropertyChanged(); } }