Skip to content

Commit d902a1e

Browse files
committed
use switch statement for Left/Right context menu logic
1 parent 10accd5 commit d902a1e

File tree

2 files changed

+38
-40
lines changed

2 files changed

+38
-40
lines changed

Flow.Launcher/MainWindow.xaml.cs

Lines changed: 35 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System;
22
using System.ComponentModel;
33
using System.Threading.Tasks;
44
using System.Windows;
@@ -313,47 +313,43 @@ private double WindowTop()
313313
/// </summary>
314314
private void OnKeyDown(object sender, KeyEventArgs e)
315315
{
316-
if (e.Key == Key.Down)
316+
switch (e.Key)
317317
{
318-
_viewModel.SelectNextItemCommand.Execute(null);
319-
e.Handled = true;
320-
}
321-
else if (e.Key == Key.Up)
322-
{
323-
_viewModel.SelectPrevItemCommand.Execute(null);
324-
e.Handled = true;
325-
}
326-
else if (e.Key == Key.PageDown)
327-
{
328-
_viewModel.SelectNextPageCommand.Execute(null);
329-
e.Handled = true;
330-
}
331-
else if (e.Key == Key.PageUp)
332-
{
333-
_viewModel.SelectPrevPageCommand.Execute(null);
334-
e.Handled = true;
335-
}
336-
else if (e.Key == Key.Right)
337-
{
338-
int caretPosition = QueryTextBox.CaretIndex;
339-
int queryLength = QueryTextBox.Text.Length;
340-
if (caretPosition == queryLength && queryLength != 0)
341-
{
342-
_viewModel.LoadContextMenuCommand.Execute(null);
318+
case Key.Down:
319+
_viewModel.SelectNextItemCommand.Execute(null);
343320
e.Handled = true;
344-
}
345-
else { }
346-
}
347-
else if (e.Key == Key.Left)
348-
{
349-
int caretPosition = QueryTextBox.CaretIndex;
350-
int queryLength = QueryTextBox.Text.Length;
351-
if (caretPosition == queryLength && queryLength == 0)
352-
{
353-
_viewModel.EscCommand.Execute(null);
321+
break;
322+
case Key.Up:
323+
_viewModel.SelectPrevItemCommand.Execute(null);
354324
e.Handled = true;
355-
}
356-
else { }
325+
break;
326+
case Key.PageDown:
327+
_viewModel.SelectNextPageCommand.Execute(null);
328+
e.Handled = true;
329+
break;
330+
case Key.PageUp:
331+
_viewModel.SelectPrevPageCommand.Execute(null);
332+
e.Handled = true;
333+
break;
334+
case Key.Right:
335+
if (_viewModel.SelectedIsFromQueryResults()
336+
&& QueryTextBox.CaretIndex == QueryTextBox.Text.Length
337+
&& !string.IsNullOrEmpty(QueryTextBox.Text))
338+
{
339+
_viewModel.LoadContextMenuCommand.Execute(null);
340+
e.Handled = true;
341+
}
342+
break;
343+
case Key.Left:
344+
if (!_viewModel.SelectedIsFromQueryResults() && QueryTextBox.CaretIndex == 0)
345+
{
346+
_viewModel.EscCommand.Execute(null);
347+
e.Handled = true;
348+
}
349+
break;
350+
default:
351+
break;
352+
357353
}
358354
}
359355

Flow.Launcher/ViewModel/MainViewModel.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,8 @@ public void ChangeQueryText(string queryText)
292292
}
293293

294294
public bool LastQuerySelected { get; set; }
295+
296+
// This is not a reliable indicator of the cursor's position, it is manually set for a specific purpose.
295297
public bool QueryTextCursorMovedToEnd { get; set; }
296298

297299
private ResultsViewModel _selectedResults;
@@ -632,7 +634,7 @@ private Result ContextMenuPluginInfo(string id)
632634
return menu;
633635
}
634636

635-
private bool SelectedIsFromQueryResults()
637+
internal bool SelectedIsFromQueryResults()
636638
{
637639
var selected = SelectedResults == Results;
638640
return selected;

0 commit comments

Comments
 (0)