Skip to content

Commit dd55c1f

Browse files
committed
Added support of clicking a BreadcrumbBarItem
1 parent 54e8a32 commit dd55c1f

File tree

3 files changed

+22
-18
lines changed

3 files changed

+22
-18
lines changed

src/Files.App/UserControls/NavigationToolbar.xaml.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ private void VisiblePath_LostFocus(object _, RoutedEventArgs e)
9999
if (App.AppModel.IsMainWindowClosed)
100100
return;
101101

102-
var element = FocusManager.GetFocusedElement(MainWindow.Instance.Content.XamlRoot);
102+
var element = Microsoft.UI.Xaml.Input.FocusManager.GetFocusedElement(MainWindow.Instance.Content.XamlRoot);
103103
if (element is FlyoutBase or AppBarButton or Popup)
104104
return;
105105

@@ -256,7 +256,7 @@ private void ClickablePath_GettingFocus(UIElement sender, GettingFocusEventArgs
256256

257257
private void BreadcrumbBar_ItemClicked(Controls.BreadcrumbBar sender, Controls.BreadcrumbBarItemClickedEventArgs args)
258258
{
259-
259+
ViewModel.HandleBreadcrumbBarItemClicked(ViewModel.PathComponents[args.Index].Path);
260260
}
261261

262262
private async void BreadcrumbBar_ItemDropDownFlyoutOpening(object sender, Controls.BreadcrumbBarItemDropDownFlyoutEventArgs e)

src/Files.App/UserControls/PathBreadcrumb.xaml.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,15 @@ private async void PathBoxItem_Drop(object sender, DragEventArgs e)
5050

5151
private async void PathBoxItem_Tapped(object sender, TappedRoutedEventArgs e)
5252
{
53-
await ViewModel.PathBoxItem_Tapped(sender, e);
53+
if (sender is not TextBlock textBlock ||
54+
textBlock.DataContext is not PathBoxItem item ||
55+
item.Path is not { } path)
56+
return;
57+
58+
// TODO: Implement middle click retrieving.
59+
await ViewModel.HandleBreadcrumbBarItemClicked(path);
60+
61+
e.Handled = true;
5462
}
5563

5664
private void PathBoxItem_PointerPressed(object sender, PointerRoutedEventArgs e)

src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -580,28 +580,24 @@ public void PathBoxItem_PointerPressed(object sender, PointerRoutedEventArgs e)
580580
_pointerRoutedEventArgs = ptrPt.Properties.IsMiddleButtonPressed ? e : null;
581581
}
582582

583-
public async Task PathBoxItem_Tapped(object sender, TappedRoutedEventArgs e)
583+
public async Task HandleBreadcrumbBarItemClicked(string path, bool? isMiddleButtonPressed = null)
584584
{
585-
var itemTappedPath = ((sender as TextBlock)?.DataContext as PathBoxItem)?.Path;
586-
if (itemTappedPath is null)
587-
return;
588-
589-
if (_pointerRoutedEventArgs is not null)
585+
isMiddleButtonPressed ??= _pointerRoutedEventArgs is not null;
586+
if (isMiddleButtonPressed is true)
590587
{
591-
await MainWindow.Instance.DispatcherQueue.EnqueueOrInvokeAsync(async () =>
592-
{
593-
await NavigationHelpers.AddNewTabByPathAsync(typeof(ShellPanesPage), itemTappedPath, true);
594-
}, DispatcherQueuePriority.Low);
595-
e.Handled = true;
588+
await MainWindow.Instance.DispatcherQueue.EnqueueOrInvokeAsync(
589+
async () =>
590+
{
591+
await NavigationHelpers.AddNewTabByPathAsync(typeof(ShellPanesPage), path, true);
592+
},
593+
DispatcherQueuePriority.Low);
594+
596595
_pointerRoutedEventArgs = null;
597596

598597
return;
599598
}
600599

601-
ToolbarPathItemInvoked?.Invoke(this, new PathNavigationEventArgs()
602-
{
603-
ItemPath = itemTappedPath
604-
});
600+
ToolbarPathItemInvoked?.Invoke(this, new() { ItemPath = path });
605601
}
606602

607603
public void PathBoxItem_PreviewKeyDown(object sender, KeyRoutedEventArgs e)

0 commit comments

Comments
 (0)