From 703d63f5dc8343f28ebaf0d85849e46451f9f5cc Mon Sep 17 00:00:00 2001 From: Adam Driscoll Date: Thu, 23 Jul 2026 22:47:21 -0500 Subject: [PATCH] Fix default tray icon initialization --- pscommander/Services/ConfigService.cs | 3 ++- pscommander/Services/MenuService.cs | 19 +++++++++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/pscommander/Services/ConfigService.cs b/pscommander/Services/ConfigService.cs index 836093d..5ffa14d 100644 --- a/pscommander/Services/ConfigService.cs +++ b/pscommander/Services/ConfigService.cs @@ -89,6 +89,7 @@ public async Task LoadAsync() var configPath = Path.Combine(GetFolder(), "config.ps1"); if (!File.Exists(configPath)) { + _menuService.UpdateToolbar(Configuration.ToolbarIcon); return; } @@ -167,4 +168,4 @@ public static void Debounce(Func action, int milliseconds = 1000) Task.Delay(milliseconds).ContinueWith(async task => { await action(); }, tokenSrc.Token); } } -} \ No newline at end of file +} diff --git a/pscommander/Services/MenuService.cs b/pscommander/Services/MenuService.cs index f1e357a..baf58e6 100644 --- a/pscommander/Services/MenuService.cs +++ b/pscommander/Services/MenuService.cs @@ -1,13 +1,12 @@ using System.Windows.Controls; using WPFMenuItem = System.Windows.Controls.MenuItem; using Hardcodet.Wpf.TaskbarNotification; -using System.Windows.Media; -using System.Windows.Media.Imaging; using System; using System.Management.Automation; using System.IO; using System.Reflection; using System.Drawing; +using System.Windows; namespace pscommander { @@ -42,7 +41,7 @@ public void UpdateToolbar(ToolbarIcon icon) if (string.IsNullOrWhiteSpace(icon.Icon)) { - _taskbarIcon.IconSource = new BitmapImage(new Uri("pack://application:,,,/pscommander;component/Resources/icon.ico")); + _taskbarIcon.Icon = LoadDefaultIcon(); } else { @@ -100,6 +99,18 @@ public void UpdateToolbar(ToolbarIcon icon) }); } + private static Icon LoadDefaultIcon() + { + var resourceInfo = Application.GetResourceStream(new Uri("pack://application:,,,/Resources/icon.ico")); + if (resourceInfo == null) + { + throw new FileNotFoundException("The default tray icon resource could not be found.", "Resources/icon.ico"); + } + + using var icon = new Icon(resourceInfo.Stream); + return (Icon)icon.Clone(); + } + private void AddMenuItem(ItemCollection items, MenuItem item) { var wpfMenuItem = new WPFMenuItem(); @@ -170,4 +181,4 @@ public void ShowInfo(string info) _taskbarIcon.ShowBalloonTip("Info", info, BalloonIcon.Info); } } -} \ No newline at end of file +}