- 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>
private void OnKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Down)
switch (e.Key)
{
_viewModel.SelectNextItemCommand.Execute(null);
e.Handled = true;
}
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);
case Key.Down:
_viewModel.SelectNextItemCommand.Execute(null);
e.Handled = true;
}
else { }
}
else if (e.Key == Key.Left)
{
int caretPosition = QueryTextBox.CaretIndex;
int queryLength = QueryTextBox.Text.Length;
if (caretPosition == queryLength && queryLength == 0)
{
_viewModel.EscCommand.Execute(null);
break;
case Key.Up:
_viewModel.SelectPrevItemCommand.Execute(null);
e.Handled = true;
}
else { }
break;
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; }
// This is not a reliable indicator of the cursor's position, it is manually set for a specific purpose.
public bool QueryTextCursorMovedToEnd { get; set; }
private ResultsViewModel _selectedResults;
@ -524,7 +526,7 @@ namespace Flow.Launcher.ViewModel
try
{
// 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)
{
@ -632,7 +634,7 @@ namespace Flow.Launcher.ViewModel
return menu;
}
private bool SelectedIsFromQueryResults()
internal bool SelectedIsFromQueryResults()
{
var selected = SelectedResults == Results;
return selected;