You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.1 KiB
35 lines
1.1 KiB
using System;
|
|
using Avalonia.Controls;
|
|
using Avalonia.Controls.ApplicationLifetimes;
|
|
using Avalonia.VisualTree;
|
|
|
|
namespace DiscordChatExporter.Gui.Utils.Extensions;
|
|
|
|
internal static class AvaloniaExtensions
|
|
{
|
|
public static Window? TryGetMainWindow(this IApplicationLifetime lifetime) =>
|
|
lifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime
|
|
? desktopLifetime.MainWindow
|
|
: null;
|
|
|
|
public static TopLevel? TryGetTopLevel(this IApplicationLifetime lifetime) =>
|
|
lifetime.TryGetMainWindow()
|
|
?? (lifetime as ISingleViewApplicationLifetime)?.MainView?.GetVisualRoot() as TopLevel;
|
|
|
|
public static bool TryShutdown(this IApplicationLifetime lifetime, int exitCode = 0)
|
|
{
|
|
if (lifetime is IClassicDesktopStyleApplicationLifetime desktopLifetime)
|
|
{
|
|
return desktopLifetime.TryShutdown(exitCode);
|
|
}
|
|
|
|
if (lifetime is IControlledApplicationLifetime controlledLifetime)
|
|
{
|
|
controlledLifetime.Shutdown(exitCode);
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
}
|