Skip to content

Commit 8f51561

Browse files
0x5bfayaira2
andauthored
Code Quality: Improved Omnibar 14.1 (#17255)
Co-authored-by: Yair <[email protected]>
1 parent fe52157 commit 8f51561

File tree

3 files changed

+49
-17
lines changed

3 files changed

+49
-17
lines changed

src/Files.App/UserControls/NavigationToolbar.xaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,7 @@
419419
<DataTemplate x:DataType="dataitems:NavigationBarSuggestionItem">
420420
<Grid Padding="0,0,4,0" ColumnSpacing="12">
421421
<Grid.ColumnDefinitions>
422-
<ColumnDefinition Width="Auto" />
422+
<ColumnDefinition Width="16" />
423423
<ColumnDefinition Width="*" />
424424
<ColumnDefinition Width="Auto" />
425425
</Grid.ColumnDefinitions>

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,10 @@ private async void Omnibar_TextChanged(Omnibar sender, OmnibarTextChangedEventAr
330330
}
331331
else if (Omnibar.CurrentSelectedMode == OmnibarCommandPaletteMode)
332332
{
333-
ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
333+
await DispatcherQueue.EnqueueOrInvokeAsync(() =>
334+
{
335+
ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
336+
});
334337
}
335338
else if (Omnibar.CurrentSelectedMode == OmnibarSearchMode)
336339
{
@@ -475,13 +478,10 @@ await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
475478
{
476479
ViewModel.OmnibarCommandPaletteModeText = string.Empty;
477480

478-
if (ViewModel.OmnibarCommandPaletteModeSuggestionItems.Count is 0)
481+
await DispatcherQueue.EnqueueOrInvokeAsync(() =>
479482
{
480-
await DispatcherQueue.EnqueueOrInvokeAsync(() =>
481-
{
482-
ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
483-
});
484-
}
483+
ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
484+
});
485485
}
486486
else if (Omnibar.CurrentSelectedMode == OmnibarSearchMode)
487487
{

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

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1148,6 +1148,8 @@ void AddNoResultsItem()
11481148

11491149
public void PopulateOmnibarSuggestionsForCommandPaletteMode()
11501150
{
1151+
var newSuggestions = new List<NavigationBarSuggestionItem>();
1152+
11511153
if (ContentPageContext.SelectedItems.Count == 1 && ContentPageContext.SelectedItem is not null && !ContentPageContext.SelectedItem.IsFolder)
11521154
{
11531155
try
@@ -1176,7 +1178,7 @@ public void PopulateOmnibarSuggestionsForCommandPaletteMode()
11761178
}
11771179
}
11781180

1179-
OmnibarCommandPaletteModeSuggestionItems.Add(newItem);
1181+
newSuggestions.Add(newItem);
11801182
}
11811183
}
11821184
catch (Exception ex)
@@ -1198,22 +1200,52 @@ public void PopulateOmnibarSuggestionsForCommandPaletteMode()
11981200
PrimaryDisplay = command.Description,
11991201
HotKeys = command.HotKeys,
12001202
SearchText = OmnibarCommandPaletteModeText,
1201-
});
1203+
})
1204+
.Where(item => item.Text != Commands.OpenCommandPalette.Description.ToString()
1205+
&& item.Text != Commands.EditPath.Description.ToString());
12021206

1203-
foreach (var item in suggestionItems)
1204-
{
1205-
if (item.Text != Commands.OpenCommandPalette.Description.ToString())
1206-
OmnibarCommandPaletteModeSuggestionItems.Add(item);
1207-
}
1207+
newSuggestions.AddRange(suggestionItems);
12081208

1209-
if (OmnibarCommandPaletteModeSuggestionItems.Count is 0)
1209+
if (newSuggestions.Count == 0)
12101210
{
1211-
OmnibarCommandPaletteModeSuggestionItems.Add(new NavigationBarSuggestionItem()
1211+
newSuggestions.Add(new NavigationBarSuggestionItem()
12121212
{
12131213
PrimaryDisplay = string.Format(Strings.NoCommandsFound.GetLocalizedResource(), OmnibarCommandPaletteModeText),
12141214
SearchText = OmnibarCommandPaletteModeText,
12151215
});
12161216
}
1217+
1218+
if (!OmnibarCommandPaletteModeSuggestionItems.IntersectBy(newSuggestions, x => x.PrimaryDisplay).Any())
1219+
{
1220+
for (int index = 0; index < newSuggestions.Count; index++)
1221+
{
1222+
if (index < OmnibarCommandPaletteModeSuggestionItems.Count)
1223+
OmnibarCommandPaletteModeSuggestionItems[index] = newSuggestions[index];
1224+
else
1225+
OmnibarCommandPaletteModeSuggestionItems.Add(newSuggestions[index]);
1226+
}
1227+
1228+
while (OmnibarCommandPaletteModeSuggestionItems.Count > newSuggestions.Count)
1229+
OmnibarCommandPaletteModeSuggestionItems.RemoveAt(OmnibarCommandPaletteModeSuggestionItems.Count - 1);
1230+
}
1231+
else
1232+
{
1233+
foreach (var s in OmnibarCommandPaletteModeSuggestionItems.ExceptBy(newSuggestions, x => x.PrimaryDisplay).ToList())
1234+
OmnibarCommandPaletteModeSuggestionItems.Remove(s);
1235+
1236+
for (int index = 0; index < newSuggestions.Count; index++)
1237+
{
1238+
if (OmnibarCommandPaletteModeSuggestionItems.Count > index
1239+
&& OmnibarCommandPaletteModeSuggestionItems[index].PrimaryDisplay == newSuggestions[index].PrimaryDisplay)
1240+
{
1241+
OmnibarCommandPaletteModeSuggestionItems[index] = newSuggestions[index];
1242+
}
1243+
else
1244+
{
1245+
OmnibarCommandPaletteModeSuggestionItems.Insert(index, newSuggestions[index]);
1246+
}
1247+
}
1248+
}
12171249
}
12181250

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

0 commit comments

Comments
 (0)