Skip to content

Commit a4c7f04

Browse files
committed
Fixed a severe issue when entering text or refocusing Omnibar after command invocation.
1 parent c050853 commit a4c7f04

File tree

3 files changed

+27
-26
lines changed

3 files changed

+27
-26
lines changed

src/Files.App/Data/Items/NavigationBarSuggestionItem.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,25 +2,25 @@
22
// Licensed under the MIT License.
33

44
using Files.App.Controls;
5+
using Microsoft.UI.Xaml;
56

67
namespace Files.App.Data.Items
78
{
89
[Obsolete("Remove once Omnibar goes out of experimental.")]
910
public sealed partial class NavigationBarSuggestionItem : ObservableObject, IOmnibarTextMemberPathProvider
1011
{
12+
// Obsolete but left as is for backwards compatibility
1113
private object? _Icon;
12-
public object? Icon
13-
{
14-
get => _Icon;
15-
set => SetProperty(ref _Icon, value);
16-
}
14+
public object? Icon { get => _Icon; set => SetProperty(ref _Icon, value); }
15+
16+
private Style? _ThemedIconStyle;
17+
public Style? ThemedIconStyle { get => _ThemedIconStyle; set => SetProperty(ref _ThemedIconStyle, value); }
18+
19+
private string? _Glyph;
20+
public string? Glyph { get => _Glyph; set => SetProperty(ref _Glyph, value); }
1721

1822
private string? _Text;
19-
public string? Text
20-
{
21-
get => _Text;
22-
set => SetProperty(ref _Text, value);
23-
}
23+
public string? Text { get => _Text; set => SetProperty(ref _Text, value); }
2424

2525
private string? _PrimaryDisplay;
2626
public string? PrimaryDisplay

src/Files.App/UserControls/NavigationToolbar.xaml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
<UserControl.Resources>
2828
<ResourceDictionary>
2929
<converters:NullToTrueConverter x:Key="NullToFalseConverter" Inverse="True" />
30+
<converters:NullToVisibilityCollapsedConverter x:Key="NullToVisibilityCollapsedConverter" />
3031
<converters1:BoolNegationConverter x:Key="BoolNegationConverter" />
3132

3233
<ResourceDictionary.MergedDictionaries>
@@ -380,14 +381,15 @@
380381
<ColumnDefinition Width="Auto" />
381382
</Grid.ColumnDefinitions>
382383

383-
<Viewbox
384-
x:Name="OmnibarCommandPaletteModeSuggestionItemIconViewbox"
385-
Grid.Column="0"
386-
Width="16"
387-
Height="16"
388-
x:Load="{x:Bind Icon, Converter={StaticResource NullToFalseConverter}, Mode=OneWay}">
389-
<ContentPresenter Content="{x:Bind Icon, Mode=OneWay}" Foreground="{ThemeResource App.Theme.IconBaseBrush}" />
390-
</Viewbox>
384+
<Grid Grid.Column="0">
385+
<Viewbox
386+
Width="16"
387+
Height="16"
388+
Visibility="{x:Bind Glyph, Converter={StaticResource NullToVisibilityCollapsedConverter}}">
389+
<FontIcon Foreground="{ThemeResource App.Theme.IconBaseBrush}" Glyph="{x:Bind Glyph}" />
390+
</Viewbox>
391+
<controls:ThemedIcon Style="{x:Bind ThemedIconStyle}" Visibility="{x:Bind ThemedIconStyle, Converter={StaticResource NullToVisibilityCollapsedConverter}}" />
392+
</Grid>
391393

392394
<!-- Primary Title -->
393395
<TextBlock
@@ -406,7 +408,7 @@
406408
x:Name="RightAlignedKeyboardShortcut"
407409
Grid.Column="2"
408410
VerticalAlignment="Center"
409-
HotKeys="{x:Bind HotKeys, Mode=OneWay}" />
411+
HotKeys="{x:Bind HotKeys}" />
410412
</Grid>
411413
</DataTemplate>
412414
</controls:OmnibarMode.SuggestionItemTemplate>

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

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1135,27 +1135,26 @@ void AddNoResultsItem()
11351135
public void PopulateOmnibarSuggestionsForCommandPaletteMode()
11361136
{
11371137
OmnibarCommandPaletteModeText ??= string.Empty;
1138-
11391138
OmnibarCommandPaletteModeSuggestionItems.Clear();
11401139

1141-
IList<NavigationBarSuggestionItem>? suggestions = null;
1142-
1143-
suggestions = [.. Commands.Where(command =>
1140+
var suggestionItems = Commands.Where(command =>
11441141
command.IsExecutable &&
11451142
command.IsAccessibleGlobally &&
11461143
(command.Description.Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase) ||
11471144
command.Code.ToString().Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase)))
11481145
.Select(command => new NavigationBarSuggestionItem()
11491146
{
11501147
Icon = command.Icon,
1148+
ThemedIconStyle = command.Glyph.ToThemedIconStyle(),
1149+
Glyph = command.Glyph.BaseGlyph,
11511150
Text = command.Code.ToString(),
11521151
PrimaryDisplay = command.Description,
11531152
HotKeys = command.HotKeys,
11541153
SearchText = OmnibarCommandPaletteModeText,
1155-
})];
1154+
});
11561155

1157-
foreach (var suggestionItem in suggestions)
1158-
OmnibarCommandPaletteModeSuggestionItems.Add(suggestionItem);
1156+
foreach (var item in suggestionItems)
1157+
OmnibarCommandPaletteModeSuggestionItems.Add(item);
11591158
}
11601159

11611160
[Obsolete("Remove once Omnibar goes out of experimental.")]

0 commit comments

Comments
 (0)