From 32f08bc0fd59792e761c17ff53d79f107d3ade55 Mon Sep 17 00:00:00 2001 From: Ray Berezowski <6616212+rberezowski@users.noreply.github.com> Date: Wed, 26 Aug 2026 19:49:49 -0400 Subject: [PATCH] Add launcher edit action --- MainWindow.xaml.cs | 12 ++++++++++++ README.md | 1 + Services/LauncherController.cs | 8 +++++++- TaskbarLauncher.csproj | 4 ++-- Views/LauncherPopup.xaml.cs | 30 +++++++++++++++++++++++++++++- docs/INSTALL.md | 1 + 6 files changed, 52 insertions(+), 4 deletions(-) diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index c00a6f2..c4b2e48 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -40,6 +40,18 @@ public partial class MainWindow : Window RefreshView(); } + public void SelectItemForEdit(LauncherItem item) + { + if (controller is null) + { + return; + } + + RefreshView(item); + Show(); + Activate(); + } + private void RefreshView(LauncherItem? itemToSelect = null) { if (controller is null) diff --git a/README.md b/README.md index 1f4a256..9497a71 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 - Nested menus, drag/drop ordering, and drag/drop item creation in Settings +- Right-click launcher entries to edit them in Settings - Right-click item duplication in Settings - Per-item icon and display mode - Automatic icon selection from app/folder targets diff --git a/Services/LauncherController.cs b/Services/LauncherController.cs index 8976adc..9fda252 100644 --- a/Services/LauncherController.cs +++ b/Services/LauncherController.cs @@ -41,6 +41,12 @@ public sealed class LauncherController : IDisposable settingsWindow.Activate(); } + public void ShowSettings(LauncherItem itemToEdit) + { + settingsWindow ??= new MainWindow(this); + settingsWindow.SelectItemForEdit(itemToEdit); + } + public void ShowAbout() { if (aboutWindow?.IsVisible == true) @@ -64,7 +70,7 @@ public sealed class LauncherController : IDisposable return; } - popup = new LauncherPopup(Config, LaunchItem, OpenAllItems, ShowSettings); + popup = new LauncherPopup(Config, LaunchItem, OpenAllItems, ShowSettings, ShowSettings); popup.Closed += (_, _) => popup = null; popup.ShowNearTaskbar(); } diff --git a/TaskbarLauncher.csproj b/TaskbarLauncher.csproj index 7f3c2b1..e49dca1 100644 --- a/TaskbarLauncher.csproj +++ b/TaskbarLauncher.csproj @@ -12,8 +12,8 @@ Ray Berezowski Assets\AppIcon.ico 1.0.1 - 1.0.1.3 - 1.0.1.3 + 1.0.1.4 + 1.0.1.4 1.0.1 diff --git a/Views/LauncherPopup.xaml.cs b/Views/LauncherPopup.xaml.cs index ad5af7c..fc783bd 100644 --- a/Views/LauncherPopup.xaml.cs +++ b/Views/LauncherPopup.xaml.cs @@ -19,14 +19,16 @@ public partial class LauncherPopup : Window private readonly Action launchItem; private readonly Action openAllItems; private readonly Action showSettings; + private readonly Action editItem; - public LauncherPopup(LauncherConfig config, Action launchItem, Action openAllItems, Action showSettings) + public LauncherPopup(LauncherConfig config, Action launchItem, Action openAllItems, Action showSettings, Action editItem) { InitializeComponent(); this.config = config; this.launchItem = launchItem; this.openAllItems = openAllItems; this.showSettings = showSettings; + this.editItem = editItem; BuildItems(); SizeChanged += (_, _) => QueueReposition(); } @@ -129,6 +131,7 @@ public partial class LauncherPopup : Window }; button.Click += (_, _) => launchItem(item); + button.ContextMenu = CreateItemContextMenu(item); button.KeyDown += (_, e) => { if (e.Key == Key.Enter) @@ -161,6 +164,8 @@ public partial class LauncherPopup : Window System.Windows.Controls.ContextMenu contextMenu = new(); contextMenu.Items.Add(openAllMenuItem); + contextMenu.Items.Add(new Separator()); + contextMenu.Items.Add(CreateEditMenuItem(item)); return new TextBlock { @@ -169,6 +174,29 @@ public partial class LauncherPopup : Window }; } + private System.Windows.Controls.ContextMenu CreateItemContextMenu(LauncherItem item) + { + System.Windows.Controls.ContextMenu contextMenu = new(); + contextMenu.Items.Add(CreateEditMenuItem(item)); + return contextMenu; + } + + private System.Windows.Controls.MenuItem CreateEditMenuItem(LauncherItem item) + { + System.Windows.Controls.MenuItem editMenuItem = new() + { + Header = "Edit in Settings" + }; + editMenuItem.Click += (_, e) => + { + editItem(item); + Close(); + e.Handled = true; + }; + + return editMenuItem; + } + private static bool IsLaunchable(LauncherItem item) { return item.Type != LauncherItemType.Menu && !string.IsNullOrWhiteSpace(item.Target); diff --git a/docs/INSTALL.md b/docs/INSTALL.md index 47eba31..7da7ee3 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -19,6 +19,7 @@ Install the **.NET Desktop Runtime** for **Windows x64**. 2. Run `TaskbarLauncher.exe`. 3. The app appears in the system tray. 4. Press `Ctrl+Alt+Space` to open the launcher. +5. Right-click a launcher entry and choose **Edit in Settings** to jump to that item. ## Configure