From b17729d614394722fb13e6215f8fa065f19c3bb6 Mon Sep 17 00:00:00 2001 From: Jonathan Gilbert Date: Thu, 13 Jun 2024 13:09:13 -0500 Subject: [PATCH] Added sample TrayIcon which crashes when a tray icon menu item is activated. --- samples/TrayIcon/AboutWindow.axaml | 18 +++++++++ samples/TrayIcon/AboutWindow.axaml.cs | 18 +++++++++ samples/TrayIcon/App.axaml | 25 ++++++++++++ samples/TrayIcon/App.axaml.cs | 56 ++++++++++++++++++++++++++ samples/TrayIcon/App.manifest | 18 +++++++++ samples/TrayIcon/AssemblyInfo.cs | 1 + samples/TrayIcon/Icon.ico | Bin 0 -> 84134 bytes samples/TrayIcon/Program.cs | 25 ++++++++++++ samples/TrayIcon/TrayIcon.csproj | 26 ++++++++++++ 9 files changed, 187 insertions(+) create mode 100644 samples/TrayIcon/AboutWindow.axaml create mode 100644 samples/TrayIcon/AboutWindow.axaml.cs create mode 100644 samples/TrayIcon/App.axaml create mode 100644 samples/TrayIcon/App.axaml.cs create mode 100644 samples/TrayIcon/App.manifest create mode 100644 samples/TrayIcon/AssemblyInfo.cs create mode 100644 samples/TrayIcon/Icon.ico create mode 100644 samples/TrayIcon/Program.cs create mode 100644 samples/TrayIcon/TrayIcon.csproj diff --git a/samples/TrayIcon/AboutWindow.axaml b/samples/TrayIcon/AboutWindow.axaml new file mode 100644 index 00000000000..acd68966e85 --- /dev/null +++ b/samples/TrayIcon/AboutWindow.axaml @@ -0,0 +1,18 @@ + + + + + + + + + + + + diff --git a/samples/TrayIcon/AboutWindow.axaml.cs b/samples/TrayIcon/AboutWindow.axaml.cs new file mode 100644 index 00000000000..766e3b3fa93 --- /dev/null +++ b/samples/TrayIcon/AboutWindow.axaml.cs @@ -0,0 +1,18 @@ +using Avalonia.Controls; +using Avalonia.Interactivity; + +namespace TrayIcon +{ + public partial class AboutWindow : Window + { + public AboutWindow() + { + InitializeComponent(); + } + + void cmdClose_Click(object? sender, RoutedEventArgs e) + { + this.Close(); + } + } +} diff --git a/samples/TrayIcon/App.axaml b/samples/TrayIcon/App.axaml new file mode 100644 index 00000000000..148ed0211d7 --- /dev/null +++ b/samples/TrayIcon/App.axaml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + diff --git a/samples/TrayIcon/App.axaml.cs b/samples/TrayIcon/App.axaml.cs new file mode 100644 index 00000000000..12887819c79 --- /dev/null +++ b/samples/TrayIcon/App.axaml.cs @@ -0,0 +1,56 @@ +using System.Windows.Input; + +using Avalonia; +using Avalonia.Controls.ApplicationLifetimes; +using Avalonia.Markup.Xaml; + +using ReactiveUI; + +namespace TrayIcon +{ + public partial class App : Application + { + public override void Initialize() + { + AvaloniaXamlLoader.Load(this); + } + + public App() + { + AboutCommand = ReactiveCommand.Create(ShowAboutWindow); + ExitCommand = ReactiveCommand.Create(ExitApplication); + + DataContext = this; + } + + public override void OnFrameworkInitializationCompleted() + { + if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) + { + _lifetime = desktop; + + desktop.ShutdownMode = Avalonia.Controls.ShutdownMode.OnExplicitShutdown; + } + + base.OnFrameworkInitializationCompleted(); + } + + IClassicDesktopStyleApplicationLifetime? _lifetime; + + public ICommand AboutCommand { get; } + public ICommand ExitCommand { get; } + + void ShowAboutWindow() + { + var window = new AboutWindow(); + + window.Show(); + } + + void ExitApplication() + { + _lifetime?.Shutdown(); + } + } +} + diff --git a/samples/TrayIcon/App.manifest b/samples/TrayIcon/App.manifest new file mode 100644 index 00000000000..bedffa84da6 --- /dev/null +++ b/samples/TrayIcon/App.manifest @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + diff --git a/samples/TrayIcon/AssemblyInfo.cs b/samples/TrayIcon/AssemblyInfo.cs new file mode 100644 index 00000000000..d09de88802a --- /dev/null +++ b/samples/TrayIcon/AssemblyInfo.cs @@ -0,0 +1 @@ +using System.Runtime.CompilerServices; diff --git a/samples/TrayIcon/Icon.ico b/samples/TrayIcon/Icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1c290f21a6c23d995d0978444a415eba3658cc09 GIT binary patch literal 84134 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 + .UsePlatformDetect() + .WithInterFont() + .LogToTrace(); + } + } +} diff --git a/samples/TrayIcon/TrayIcon.csproj b/samples/TrayIcon/TrayIcon.csproj new file mode 100644 index 00000000000..5792ca84242 --- /dev/null +++ b/samples/TrayIcon/TrayIcon.csproj @@ -0,0 +1,26 @@ + + + WinExe + net8.0 + enable + true + + + + + + + + + + + + + + + + + + + +