diff --git a/src/Files.App/UserControls/TabBar/TabBar.xaml b/src/Files.App/UserControls/TabBar/TabBar.xaml index efdd15677cf8..901ab856fca3 100644 --- a/src/Files.App/UserControls/TabBar/TabBar.xaml +++ b/src/Files.App/UserControls/TabBar/TabBar.xaml @@ -74,6 +74,7 @@ CanReorderTabs="{x:Bind AllowTabsDrag, Mode=OneWay}" DragLeave="TabView_DragLeave" IsAddTabButtonVisible="False" + PointerWheelChanged="TabView_PointerWheelChanged" SelectedIndex="{x:Bind root:App.AppModel.TabStripSelectedIndex, Mode=TwoWay}" SelectionChanged="TabView_SelectionChanged" TabCloseRequested="TabView_TabCloseRequested" diff --git a/src/Files.App/UserControls/TabBar/TabBar.xaml.cs b/src/Files.App/UserControls/TabBar/TabBar.xaml.cs index cb63c21303ec..ce45d03dda15 100644 --- a/src/Files.App/UserControls/TabBar/TabBar.xaml.cs +++ b/src/Files.App/UserControls/TabBar/TabBar.xaml.cs @@ -266,6 +266,26 @@ private async void TabView_TabDroppedOutside(TabView sender, TabViewTabDroppedOu (args.Item as TabBarItem)?.Unload(); } + private void TabView_PointerWheelChanged(object sender, PointerRoutedEventArgs e) + { + var delta = e.GetCurrentPoint(null).Properties.MouseWheelDelta; + + if (delta > 0) + { + // Scroll up, select the next tab + if (HorizontalTabView.SelectedIndex < HorizontalTabView.TabItems.Count - 1) + HorizontalTabView.SelectedIndex++; + } + else + { + // Scroll down, select the previous tab + if (HorizontalTabView.SelectedIndex > 0) + HorizontalTabView.SelectedIndex--; + } + + e.Handled = true; + } + private void TabItemContextMenu_Opening(object sender, object e) { MenuItemMoveTabToNewWindow.IsEnabled = Items.Count > 1;