- Merge "use switch statement for Left/Right context menu logic"

This commit is contained in:
Dobin Park 2021-10-05 17:37:58 +09:00
parent 10accd5d0d
commit e14bb23a7a
2 changed files with 38 additions and 40 deletions

View file

@ -313,47 +313,43 @@ namespace Flow.Launcher
/// </summary> /// </summary>
private void OnKeyDown(object sender, KeyEventArgs e) private void OnKeyDown(object sender, KeyEventArgs e)
{ {
if (e.Key == Key.Down) switch (e.Key)
{ {
_viewModel.SelectNextItemCommand.Execute(null); case Key.Down:
e.Handled = true; _viewModel.SelectNextItemCommand.Execute(null);
}
else if (e.Key == Key.Up)
{
_viewModel.SelectPrevItemCommand.Execute(null);
e.Handled = true;
}
else if (e.Key == Key.PageDown)
{
_viewModel.SelectNextPageCommand.Execute(null);
e.Handled = true;
}
else if (e.Key == Key.PageUp)
{
_viewModel.SelectPrevPageCommand.Execute(null);
e.Handled = true;
}
else if (e.Key == Key.Right)
{
int caretPosition = QueryTextBox.CaretIndex;
int queryLength = QueryTextBox.Text.Length;
if (caretPosition == queryLength && queryLength != 0)
{
_viewModel.LoadContextMenuCommand.Execute(null);
e.Handled = true; e.Handled = true;
} break;
else { } case Key.Up:
} _viewModel.SelectPrevItemCommand.Execute(null);
else if (e.Key == Key.Left)
{
int caretPosition = QueryTextBox.CaretIndex;
int queryLength = QueryTextBox.Text.Length;
if (caretPosition == queryLength && queryLength == 0)
{
_viewModel.EscCommand.Execute(null);
e.Handled = true; e.Handled = true;
} break;
else { } case Key.PageDown:
_viewModel.SelectNextPageCommand.Execute(null);
e.Handled = true;
break;
case Key.PageUp:
_viewModel.SelectPrevPageCommand.Execute(null);
e.Handled = true;
break;
case Key.Right:
if (_viewModel.SelectedIsFromQueryResults()
&& QueryTextBox.CaretIndex == QueryTextBox.Text.Length
&& !string.IsNullOrEmpty(QueryTextBox.Text))
{
_viewModel.LoadContextMenuCommand.Execute(null);
e.Handled = true;
}
break;
case Key.Left:
if (!_viewModel.SelectedIsFromQueryResults() && QueryTextBox.CaretIndex == 0)
{
_viewModel.EscCommand.Execute(null);
e.Handled = true;
}
break;
default:
break;
} }
} }

View file

@ -292,6 +292,8 @@ namespace Flow.Launcher.ViewModel
} }
public bool LastQuerySelected { get; set; } public bool LastQuerySelected { get; set; }
// This is not a reliable indicator of the cursor's position, it is manually set for a specific purpose.
public bool QueryTextCursorMovedToEnd { get; set; } public bool QueryTextCursorMovedToEnd { get; set; }
private ResultsViewModel _selectedResults; private ResultsViewModel _selectedResults;
@ -524,7 +526,7 @@ namespace Flow.Launcher.ViewModel
try try
{ {
// Check the code, WhenAll will translate all type of IEnumerable or Collection to Array, so make an array at first // Check the code, WhenAll will translate all type of IEnumerable or Collection to Array, so make an array at first
await Task.WhenAll(tasks); await Task.WhenAll(tasks);
} }
catch (OperationCanceledException) catch (OperationCanceledException)
{ {
@ -632,7 +634,7 @@ namespace Flow.Launcher.ViewModel
return menu; return menu;
} }
private bool SelectedIsFromQueryResults() internal bool SelectedIsFromQueryResults()
{ {
var selected = SelectedResults == Results; var selected = SelectedResults == Results;
return selected; return selected;