From 9e5bb0feba9e62d28d1aa912dbb31b30e2f95c11 Mon Sep 17 00:00:00 2001 From: David Brett Date: Sat, 1 Aug 2026 13:18:35 +0200 Subject: [PATCH 1/2] Fix right arrow input to open context menus being ignored for home results These show up when there is no query but we were ignoring the arrow key if there was no query Removed that filter to fix this --- Flow.Launcher/MainWindow.xaml.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index 4866c0deae6..1d71e88d940 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -461,8 +461,7 @@ private void OnKeyDown(object sender, KeyEventArgs e) break; case Key.Right: if (_viewModel.QueryResultsSelected() - && QueryTextBox.CaretIndex == QueryTextBox.Text.Length - && !string.IsNullOrEmpty(QueryTextBox.Text)) + && QueryTextBox.CaretIndex == QueryTextBox.Text.Length) { _viewModel.LoadContextMenuCommand.Execute(null); e.Handled = true; From 3c5eaaf4d487eedfd6c11841b8fd351d47593e6a Mon Sep 17 00:00:00 2001 From: David Brett Date: Sat, 1 Aug 2026 13:43:11 +0200 Subject: [PATCH 2/2] Apply ignored query text only to search queries The ignored query text flag is meant to skip a redundant search when the query text is restored programmatically, such as returning from the context menu. But it also stopped the context menu and history from rebuilding, so on the home page they kept showing stale results. We now apply the flag only when running a search, so the context menu and history are always rebuilt fresh. --- Flow.Launcher/ViewModel/MainViewModel.cs | 28 ++++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/Flow.Launcher/ViewModel/MainViewModel.cs b/Flow.Launcher/ViewModel/MainViewModel.cs index 920e5be256c..2dfd161a3e2 100644 --- a/Flow.Launcher/ViewModel/MainViewModel.cs +++ b/Flow.Launcher/ViewModel/MainViewModel.cs @@ -897,6 +897,7 @@ private ResultsViewModel SelectedResults // so we need manually call Query() // http://stackoverflow.com/posts/25895769/revisions QueryText = string.Empty; + // When we are changing query because selected results are changed to history or context menu, // we should not delay the query Query(false); @@ -1220,22 +1221,25 @@ public void QueryResults() public void Query(bool searchDelay, bool isReQuery = false) { - if (_ignoredQueryText != null) + if (QueryResultsSelected()) { - if (_ignoredQueryText == QueryText) - { - _ignoredQueryText = null; - return; - } - else + // We use this to skip creating a new result set and keep the old results. + // This matching is used for programmatic QueryText changes (not user typing), + // such as when returning to the results from the context menu + if (_ignoredQueryText != null) { - // If _ignoredQueryText does not match current QueryText, we should still execute Query - _ignoredQueryText = null; + if (_ignoredQueryText == QueryText) + { + _ignoredQueryText = null; + return; + } + else + { + // If _ignoredQueryText does not match current QueryText, we should still execute Query + _ignoredQueryText = null; + } } - } - if (QueryResultsSelected()) - { _ = QueryResultsAsync(searchDelay, isReQuery); } else if (ContextMenuSelected())