diff --git a/Flow.Launcher/ResultListBox.xaml b/Flow.Launcher/ResultListBox.xaml index e815c8735..825d92d18 100644 --- a/Flow.Launcher/ResultListBox.xaml +++ b/Flow.Launcher/ResultListBox.xaml @@ -27,7 +27,7 @@ Style="{DynamicResource BaseListboxStyle}" VirtualizingPanel.ScrollUnit="Item" VirtualizingStackPanel.IsVirtualizing="True" - VirtualizingStackPanel.VirtualizationMode="Standard" + VirtualizingStackPanel.VirtualizationMode="Recycling" Visibility="{Binding Visibility}" mc:Ignorable="d"> diff --git a/Flow.Launcher/ResultListBox.xaml.cs b/Flow.Launcher/ResultListBox.xaml.cs index fcc73e9ce..f78793bc8 100644 --- a/Flow.Launcher/ResultListBox.xaml.cs +++ b/Flow.Launcher/ResultListBox.xaml.cs @@ -12,7 +12,7 @@ namespace Flow.Launcher { protected Lock _lock = new(); private Point _lastpos; - private ListBoxItem curItem = null; + private ResultViewModel _currentResult = null; public ResultListBox() { InitializeComponent(); @@ -60,9 +60,12 @@ namespace Flow.Launcher { lock (_lock) { - curItem = (ListBoxItem)sender; - var p = e.GetPosition((IInputElement)sender); - _lastpos = p; + if (sender is FrameworkElement { DataContext: ResultViewModel result }) + { + _currentResult = result; + var p = e.GetPosition((IInputElement)sender); + _lastpos = p; + } } } @@ -82,9 +85,9 @@ namespace Flow.Launcher { lock (_lock) { - if (curItem != null) + if (_currentResult != null && sender is ListBox listBox) { - curItem.IsSelected = true; + listBox.SelectedItem = _currentResult; } } }