Skip to content

Commit 0d24cbc

Browse files
authored
Code Quality: Added navigation button overflow menu (#17195)
1 parent ba53823 commit 0d24cbc

File tree

3 files changed

+64
-1
lines changed

3 files changed

+64
-1
lines changed

src/Files.App/Strings/en-US/Resources.resw

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4245,8 +4245,11 @@
42454245
</data>
42464246
<data name="BreadcrumbBarChevronButtonToolTip" xml:space="preserve">
42474247
<value>Show child folders</value>
4248-
</data>
4248+
</data>
42494249
<data name="NoCommandsFound" xml:space="preserve">
42504250
<value>There are no commands containing {0}</value>
42514251
</data>
4252+
<data name="SeeMore" xml:space="preserve">
4253+
<value>See more</value>
4254+
</data>
42524255
</root>

src/Files.App/UserControls/NavigationToolbar.xaml

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,34 @@
136136
</Button.ContextFlyout>
137137
</Button>
138138

139+
<Button
140+
x:Name="FlyoutButton"
141+
LosingFocus="NavigationButtonOverflowFlyoutButton_LosingFocus"
142+
Style="{StaticResource AddressToolbarButtonStyle}"
143+
ToolTipService.ToolTip="{helpers:ResourceString Name=SeeMore}"
144+
Visibility="Collapsed">
145+
<FontIcon FontSize="14" Glyph="&#xE712;" />
146+
<Button.Flyout>
147+
<MenuFlyout Placement="BottomEdgeAlignedLeft">
148+
<MenuFlyoutItem Command="{x:Bind Commands.NavigateForward, Mode=OneWay}" Text="{x:Bind Commands.NavigateForward.Label, Mode=OneWay}">
149+
<MenuFlyoutItem.Icon>
150+
<FontIcon Glyph="{x:Bind Commands.NavigateForward.Glyph.BaseGlyph, Mode=OneTime}" />
151+
</MenuFlyoutItem.Icon>
152+
</MenuFlyoutItem>
153+
<MenuFlyoutItem Command="{x:Bind Commands.NavigateUp, Mode=OneWay}" Text="{x:Bind Commands.NavigateUp.Label, Mode=OneWay}">
154+
<MenuFlyoutItem.Icon>
155+
<FontIcon Glyph="{x:Bind Commands.NavigateUp.Glyph.BaseGlyph, Mode=OneTime}" />
156+
</MenuFlyoutItem.Icon>
157+
</MenuFlyoutItem>
158+
<MenuFlyoutItem Command="{x:Bind Commands.RefreshItems, Mode=OneWay}" Text="{x:Bind Commands.RefreshItems.Label, Mode=OneWay}">
159+
<MenuFlyoutItem.Icon>
160+
<FontIcon Glyph="{x:Bind Commands.RefreshItems.Glyph.BaseGlyph, Mode=OneTime}" />
161+
</MenuFlyoutItem.Icon>
162+
</MenuFlyoutItem>
163+
</MenuFlyout>
164+
</Button.Flyout>
165+
</Button>
166+
139167
<Button
140168
x:Name="Forward"
141169
AccessKey="F"
@@ -579,6 +607,31 @@
579607
Target="{x:Bind ShowStatusCenterButton}" />
580608

581609
<VisualStateManager.VisualStateGroups>
610+
<VisualStateGroup x:Name="NavigationStates">
611+
<VisualState x:Name="Narrow">
612+
<VisualState.StateTriggers>
613+
<AdaptiveTrigger MinWindowWidth="0" />
614+
</VisualState.StateTriggers>
615+
<VisualState.Setters>
616+
<Setter Target="FlyoutButton.Visibility" Value="Visible" />
617+
<Setter Target="Forward.Visibility" Value="Collapsed" />
618+
<Setter Target="Up.Visibility" Value="Collapsed" />
619+
<Setter Target="Refresh.Visibility" Value="Collapsed" />
620+
</VisualState.Setters>
621+
</VisualState>
622+
<VisualState x:Name="Wide">
623+
<VisualState.StateTriggers>
624+
<AdaptiveTrigger MinWindowWidth="540" />
625+
</VisualState.StateTriggers>
626+
<VisualState.Setters>
627+
<Setter Target="FlyoutButton.Visibility" Value="Collapsed" />
628+
<Setter Target="Forward.Visibility" Value="Visible" />
629+
<Setter Target="Up.Visibility" Value="Visible" />
630+
<Setter Target="Refresh.Visibility" Value="Visible" />
631+
</VisualState.Setters>
632+
</VisualState>
633+
</VisualStateGroup>
634+
582635
<VisualStateGroup x:Name="SearchBoxStates">
583636
<VisualState x:Name="SearchBoxAlwaysShown">
584637
<VisualState.StateTriggers>

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -428,5 +428,12 @@ private void Omnibar_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
428428
(MainPageViewModel.SelectedTabItem?.TabItemContent as Control)?.Focus(FocusState.Programmatic);
429429
}
430430
}
431+
432+
private void NavigationButtonOverflowFlyoutButton_LosingFocus(UIElement sender, LosingFocusEventArgs args)
433+
{
434+
// Prevent the Omnibar from taking focus if the overflow button is hidden while the button is focused
435+
if (args.NewFocusedElement is TextBox)
436+
args.Cancel = true;
437+
}
431438
}
432439
}

0 commit comments

Comments
 (0)