Browse Source

Fixed Start<TMainWindow>() + obsoleted Start()

no-llvmpipe
Nikita Tsukanov 7 years ago
parent
commit
1e115b89c8
  1. 24
      src/Avalonia.Controls/AppBuilderBase.cs
  2. 2
      src/Avalonia.Controls/DesktopApplicationExtensions.cs

24
src/Avalonia.Controls/AppBuilderBase.cs

@ -4,6 +4,7 @@
using System; using System;
using System.Reflection; using System.Reflection;
using System.Linq; using System.Linq;
using Avalonia.Controls.ApplicationLifetimes;
using Avalonia.Platform; using Avalonia.Platform;
namespace Avalonia.Controls namespace Avalonia.Controls
@ -106,19 +107,28 @@ namespace Avalonia.Controls
public void Start<TMainWindow>(Func<object> dataContextProvider = null) public void Start<TMainWindow>(Func<object> dataContextProvider = null)
where TMainWindow : Window, new() where TMainWindow : Window, new()
{ {
var window = new TMainWindow(); AfterSetup(builder =>
if (dataContextProvider != null) {
window.DataContext = dataContextProvider(); var window = new TMainWindow();
Instance.Run(window); if (dataContextProvider != null)
window.DataContext = dataContextProvider();
((IClassicDesktopStyleApplicationLifetime)builder.Instance.ApplicationLifetime)
.MainWindow = window;
});
// Copy-pasted because we can't call extension methods due to generic constraints
var lifetime = new ClassicDesktopStyleApplicationLifetime(Instance) {ShutdownMode = ShutdownMode.OnMainWindowClose};
Instance.ApplicationLifetime = lifetime;
SetupWithoutStarting();
lifetime.Start(Array.Empty<string>());
} }
public delegate void AppMainDelegate(Application app, string[] args); public delegate void AppMainDelegate(Application app, string[] args);
[Obsolete("Use either lifetimes or AppMain overload. See see https://github.com/AvaloniaUI/Avalonia/wiki/Application-lifetimes for details")] [Obsolete("Use either lifetimes or AppMain overload. See see https://github.com/AvaloniaUI/Avalonia/wiki/Application-lifetimes for details", true)]
public void Start() public void Start()
{ {
Setup(); throw new NotSupportedException();
Instance.Run();
} }
public void Start(AppMainDelegate main, string[] args) public void Start(AppMainDelegate main, string[] args)

2
src/Avalonia.Controls/DesktopApplicationExtensions.cs

@ -8,7 +8,7 @@ namespace Avalonia.Controls
{ {
public static class DesktopApplicationExtensions public static class DesktopApplicationExtensions
{ {
[Obsolete("Running application without a cancellation token and a lifetime is no longer supported, see https://github.com/AvaloniaUI/Avalonia/wiki/Application-lifetimes for details")] [Obsolete("Running application without a cancellation token and a lifetime is no longer supported, see https://github.com/AvaloniaUI/Avalonia/wiki/Application-lifetimes for details", true)]
public static void Run(this Application app) => throw new NotSupportedException(); public static void Run(this Application app) => throw new NotSupportedException();
/// <summary> /// <summary>

Loading…
Cancel
Save