diff --git a/src/dev/impl/DevToys/ViewModels/MainPageViewModel.cs b/src/dev/impl/DevToys/ViewModels/MainPageViewModel.cs index 886b253e9c..6385792cd9 100644 --- a/src/dev/impl/DevToys/ViewModels/MainPageViewModel.cs +++ b/src/dev/impl/DevToys/ViewModels/MainPageViewModel.cs @@ -666,8 +666,9 @@ ToolProviderViewItem[] newRecommendedTools using (await _sempahore.WaitAsync(CancellationToken.None).ConfigureAwait(false)) { - if (newRecommendedTools.Length == 1 - && IsToolDisplayedInMenu(ToolsMenuItems.OfType(), newRecommendedTools[0])) + ToolProviderViewItem? toolProvider = GetRecommendedToolProvider(newRecommendedTools); + if (toolProvider != null + && IsToolDisplayedInMenu(ToolsMenuItems.OfType(), toolProvider)) { // One unique tool is recommended. // The recommended tool is displayed in the top menu. @@ -679,13 +680,28 @@ await ThreadHelper.RunOnUIThreadAsync( { if (!IsInCompactOverlayMode && _allowSelectAutomaticallyRecommendedTool) { - SetSelectedMenuItem(newRecommendedTools[0], _clipboardContent); + SetSelectedMenuItem(toolProvider, _clipboardContent); } }); } } } + private ToolProviderViewItem? GetRecommendedToolProvider(ToolProviderViewItem[] items) + { + ToolProviderViewItem favoriteItem = items.FirstOrDefault(i => i.IsFavorite); + if (favoriteItem != null) + { + return favoriteItem; + } + else if (items.Length == 1) + { + return items[0]; + } + + return null; + } + private bool IsToolDisplayedInMenu(IEnumerable tools, ToolProviderViewItem ToolProviderViewItem) { Arguments.NotNull(tools, nameof(tools));