Skip to content

Commit 84a35eb

Browse files
authoredDec 31, 2024
Fix: Fixed keyboard navigation in the address path bar (#16653)
1 parent 8436c6d commit 84a35eb

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed
 

Diff for: ‎src/Files.App/UserControls/AddressToolbar.xaml

+1
Original file line numberDiff line numberDiff line change
@@ -428,6 +428,7 @@
428428
BorderBrush="{ThemeResource ControlElevationBorderBrush}"
429429
BorderThickness="1"
430430
CornerRadius="{StaticResource ControlCornerRadius}"
431+
GettingFocus="ClickablePath_GettingFocus"
431432
PointerPressed="ManualPathEntryItem_Click"
432433
Visibility="{x:Bind converters:MultiBooleanConverter.OrNotConvertToVisibility(ShowSearchBox, ViewModel.IsSearchBoxVisible), Mode=OneWay}">
433434
<Grid.ColumnDefinitions>

Diff for: ‎src/Files.App/UserControls/AddressToolbar.xaml.cs

+19-1
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,18 @@ private void ManualPathEntryItem_Click(object _, PointerRoutedEventArgs e)
7373
ViewModel.IsEditModeEnabled = true;
7474
}
7575

76-
private void VisiblePath_KeyDown(object _, KeyRoutedEventArgs e)
76+
private async void VisiblePath_KeyDown(object _, KeyRoutedEventArgs e)
7777
{
7878
if (e.Key is VirtualKey.Escape)
7979
ViewModel.IsEditModeEnabled = false;
80+
81+
if (e.Key is VirtualKey.Tab)
82+
{
83+
ViewModel.IsEditModeEnabled = false;
84+
// Delay to ensure clickable path is ready to be focused
85+
await Task.Delay(10);
86+
ClickablePath.Focus(FocusState.Keyboard);
87+
}
8088
}
8189
private void VisiblePath_LostFocus(object _, RoutedEventArgs e)
8290
{
@@ -216,5 +224,15 @@ private void HistoryItemClicked(ToolbarHistoryItemModel? itemModel)
216224
shellPage.Forward_Click();
217225
}
218226
}
227+
228+
private void ClickablePath_GettingFocus(UIElement sender, GettingFocusEventArgs args)
229+
{
230+
if (args.InputDevice != FocusInputDeviceKind.Keyboard)
231+
return;
232+
233+
var previousControl = args.OldFocusedElement as FrameworkElement;
234+
if (previousControl?.Name == nameof(HomeButton) || previousControl?.Name == nameof(Refresh))
235+
ViewModel.IsEditModeEnabled = true;
236+
}
219237
}
220238
}

0 commit comments

Comments
 (0)