diff --git a/src/modules/launcher/PowerLauncher/ResultList.xaml b/src/modules/launcher/PowerLauncher/ResultList.xaml
index c592e38645..38725a1d99 100644
--- a/src/modules/launcher/PowerLauncher/ResultList.xaml
+++ b/src/modules/launcher/PowerLauncher/ResultList.xaml
@@ -176,6 +176,7 @@
ScrollViewer.VerticalScrollBarVisibility="Auto"
SelectionMode="Single"
SelectedIndex="{Binding Results.SelectedIndex, Mode=TwoWay}"
+ SelectionChanged="SuggestionsListView_SelectionChanged"
ItemContainerStyle="{StaticResource ResultsListViewItemContainerStyle}"
AutomationProperties.Name="{x:Static p:Resources.Results}">
@@ -208,7 +209,7 @@
-
+
@@ -288,9 +290,10 @@
VerticalAlignment="Center"
Height="42"
Width="42"
+ Name="commandButton"
BorderThickness="1" >
-
+
diff --git a/src/modules/launcher/PowerLauncher/ResultList.xaml.cs b/src/modules/launcher/PowerLauncher/ResultList.xaml.cs
index c2375c3584..858b2b39c2 100644
--- a/src/modules/launcher/PowerLauncher/ResultList.xaml.cs
+++ b/src/modules/launcher/PowerLauncher/ResultList.xaml.cs
@@ -2,7 +2,9 @@
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
+using System.Windows;
using System.Windows.Controls;
+using System.Windows.Media;
namespace PowerLauncher
{
@@ -15,5 +17,73 @@ namespace PowerLauncher
{
InitializeComponent();
}
+
+ private ToolTip _previouslyOpenedToolTip;
+
+ // From https://docs.microsoft.com/en-us/dotnet/desktop/wpf/data/how-to-find-datatemplate-generated-elements
+ private TypeChildItem FindVisualChild(DependencyObject obj)
+ where TypeChildItem : DependencyObject
+ {
+ for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
+ {
+ DependencyObject child = VisualTreeHelper.GetChild(obj, i);
+ if (child != null && child is TypeChildItem)
+ {
+ return (TypeChildItem)child;
+ }
+ else
+ {
+ TypeChildItem childOfChild = FindVisualChild(child);
+ if (childOfChild != null)
+ {
+ return childOfChild;
+ }
+ }
+ }
+
+ return null;
+ }
+
+ private void HideCurrentToolTip()
+ {
+ if (_previouslyOpenedToolTip != null)
+ {
+ _previouslyOpenedToolTip.IsOpen = false;
+ }
+ }
+
+ private void ContextMenuListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ var listView = sender as ListView;
+ if (listView.SelectedItem != null)
+ {
+ ListBoxItem listBoxItem = (ListBoxItem)listView.ItemContainerGenerator.ContainerFromItem(listView.SelectedItem);
+ ContentPresenter contentPresenter = FindVisualChild(listBoxItem);
+ DataTemplate dataTemplate = contentPresenter.ContentTemplate;
+ Button button = (Button)dataTemplate.FindName("commandButton", contentPresenter);
+ ToolTip tooltip = button.ToolTip as ToolTip;
+ tooltip.PlacementTarget = button;
+ tooltip.Placement = System.Windows.Controls.Primitives.PlacementMode.Right;
+ tooltip.PlacementRectangle = new Rect(0, button.Height, 0, 0);
+ tooltip.IsOpen = true;
+ }
+ }
+
+ private void ToolTip_Opened(object sender, RoutedEventArgs e)
+ {
+ if (string.Equals(sender.GetType().FullName, "System.Windows.Controls.ToolTip", System.StringComparison.InvariantCulture))
+ {
+ HideCurrentToolTip();
+ _previouslyOpenedToolTip = (ToolTip)sender;
+ }
+ }
+
+ private void SuggestionsListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
+ {
+ if (string.Equals(((ListView)e.OriginalSource).Name, "SuggestionsList", System.StringComparison.InvariantCulture))
+ {
+ HideCurrentToolTip();
+ }
+ }
}
}