Skip to content

Commit 53a0758

Browse files
committed
Fixed a severe issue when entering text or refocusing Omnibar after command invocation.
1 parent 06937f1 commit 53a0758

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>
@@ -396,14 +397,15 @@
396397
<ColumnDefinition Width="Auto" />
397398
</Grid.ColumnDefinitions>
398399

399-
<Viewbox
400-
x:Name="OmnibarCommandPaletteModeSuggestionItemIconViewbox"
401-
Grid.Column="0"
402-
Width="16"
403-
Height="16"
404-
x:Load="{x:Bind Icon, Converter={StaticResource NullToFalseConverter}, Mode=OneWay}">
405-
<ContentPresenter Content="{x:Bind Icon, Mode=OneWay}" Foreground="{ThemeResource App.Theme.IconBaseBrush}" />
406-
</Viewbox>
400+
<Grid Grid.Column="0">
401+
<Viewbox
402+
Width="16"
403+
Height="16"
404+
Visibility="{x:Bind Glyph, Converter={StaticResource NullToVisibilityCollapsedConverter}}">
405+
<FontIcon Foreground="{ThemeResource App.Theme.IconBaseBrush}" Glyph="{x:Bind Glyph}" />
406+
</Viewbox>
407+
<controls:ThemedIcon Style="{x:Bind ThemedIconStyle}" Visibility="{x:Bind ThemedIconStyle, Converter={StaticResource NullToVisibilityCollapsedConverter}}" />
408+
</Grid>
407409

408410
<!-- Primary Title -->
409411
<TextBlock
@@ -422,7 +424,7 @@
422424
x:Name="RightAlignedKeyboardShortcut"
423425
Grid.Column="2"
424426
VerticalAlignment="Center"
425-
HotKeys="{x:Bind HotKeys, Mode=OneWay}" />
427+
HotKeys="{x:Bind HotKeys}" />
426428
</Grid>
427429
</DataTemplate>
428430
</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)