From 6d9bbbab0237a2e7d73d3cdca140bcfe370388ba Mon Sep 17 00:00:00 2001 From: Ray Berezowski <6616212+rberezowski@users.noreply.github.com> Date: Wed, 26 Aug 2026 22:04:26 -0400 Subject: [PATCH] Add launcher item tooltips --- README.md | 1 + TaskbarLauncher.csproj | 4 +-- Views/LauncherPopup.xaml.cs | 52 ++++++++++++++++++++++++++++++++++--- docs/INSTALL.md | 2 ++ 4 files changed, 53 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 3a891f6..f46f679 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ Download the compiled Windows release from: - Global hotkey, default `Ctrl+Alt+Space` - Search/filter in the launcher popup with parent menu context - Keyboard navigation in the launcher popup +- Tooltips for launcher items, menu paths, targets, and arguments - Recent items section for quickly relaunching entries - Nested menus, drag/drop ordering, and drag/drop item creation in Settings - Right-click launcher entries to edit them in Settings diff --git a/TaskbarLauncher.csproj b/TaskbarLauncher.csproj index 4db4170..ff9fbd8 100644 --- a/TaskbarLauncher.csproj +++ b/TaskbarLauncher.csproj @@ -12,8 +12,8 @@ Ray Berezowski Assets\AppIcon.ico 1.0.1 - 1.0.1.16 - 1.0.1.16 + 1.0.1.17 + 1.0.1.17 1.0.1 diff --git a/Views/LauncherPopup.xaml.cs b/Views/LauncherPopup.xaml.cs index fd0120c..62472e5 100644 --- a/Views/LauncherPopup.xaml.cs +++ b/Views/LauncherPopup.xaml.cs @@ -146,7 +146,8 @@ public partial class LauncherPopup : Window IsExpanded = expandMenusByDefault, Margin = new Thickness(depth * 12, 4, 0, 4), Focusable = true, - Tag = item + Tag = item, + ToolTip = CreateItemToolTip(item) }; expander.KeyDown += NavigationControl_KeyDown; expander.Expanded += (_, _) => RebuildNavigationAndReposition(); @@ -168,7 +169,8 @@ public partial class LauncherPopup : Window Margin = new Thickness(depth * 12, 2, 0, 2), MinHeight = DisplayModeMetrics.GetRowHeight(GetEffectiveDisplayMode(item)), HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left, - Tag = item + Tag = item, + ToolTip = CreateItemToolTip(item) }; button.Click += (_, _) => launchItem(item); @@ -204,7 +206,8 @@ public partial class LauncherPopup : Window return new TextBlock { Text = item.Title, - ContextMenu = contextMenu + ContextMenu = contextMenu, + ToolTip = CreateItemToolTip(item) }; } @@ -354,7 +357,8 @@ public partial class LauncherPopup : Window MinHeight = Math.Max(DisplayModeMetrics.GetRowHeight(GetEffectiveDisplayMode(match.Item)), 48), HorizontalContentAlignment = System.Windows.HorizontalAlignment.Left, Tag = match.Item, - ContextMenu = CreateItemContextMenu(match.Item) + ContextMenu = CreateItemContextMenu(match.Item), + ToolTip = CreateItemToolTip(match.Item, match.ParentPath) }; button.Click += (_, _) => launchItem(match.Item); @@ -423,6 +427,46 @@ public partial class LauncherPopup : Window return panel; } + private static System.Windows.Controls.ToolTip CreateItemToolTip(LauncherItem item, string? parentPath = null) + { + StackPanel panel = new() { MaxWidth = 520 }; + AddToolTipLine(panel, item.Title, bold: true); + AddToolTipLine(panel, $"Type: {item.Type}"); + + if (!string.IsNullOrWhiteSpace(parentPath)) + { + AddToolTipLine(panel, $"Menu: {parentPath}"); + } + + if (!string.IsNullOrWhiteSpace(item.Target)) + { + AddToolTipLine(panel, $"Target: {item.Target}"); + } + + if (!string.IsNullOrWhiteSpace(item.Arguments)) + { + AddToolTipLine(panel, $"Arguments: {item.Arguments}"); + } + + if (item.IsFavorite) + { + AddToolTipLine(panel, "Pinned to top"); + } + + return new System.Windows.Controls.ToolTip { Content = panel }; + } + + private static void AddToolTipLine(StackPanel panel, string text, bool bold = false) + { + panel.Children.Add(new TextBlock + { + Text = text, + FontWeight = bold ? FontWeights.SemiBold : FontWeights.Normal, + TextWrapping = TextWrapping.Wrap, + Margin = panel.Children.Count == 0 ? new Thickness(0) : new Thickness(0, 3, 0, 0) + }); + } + private static void CollectMatches(IEnumerable items, string query, List parentNames, List matches) { foreach (LauncherItem item in GetDisplayItems(items)) diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 759bf1f..278fb84 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -30,6 +30,8 @@ Search results include the parent menu path when an item is inside a menu. Use arrow keys, Home, End, Enter, and Escape to navigate the launcher popup from the keyboard. +Hover over launcher items to see details such as type, menu path, target, and arguments. + ## Configure Open the tray menu and choose **Settings**.