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..b0354534f 100644 --- a/EverythingToolbar/EverythingSearch.cs +++ b/EverythingToolbar/EverythingSearch.cs @@ -68,6 +68,7 @@ public Filter CurrentFilter return; _currentFilter = value; + Settings.Default.lastFilter = value.Name; lock (_lock) SearchResults.Clear();