Browse Source

much simpler interface with application class and platform events.

pull/5639/head
Dan Walmsley 5 years ago
parent
commit
8e6502f222
  1. 13
      src/Avalonia.Controls/Application.cs
  2. 9
      src/Avalonia.Controls/Platform/IApplicationPlatform.cs
  3. 7
      src/Avalonia.Controls/Platform/IApplicationPlatformEvents.cs
  4. 6
      src/Avalonia.Native/AvaloniaNativeApplicationPlatform.cs
  5. 1
      src/Avalonia.Native/AvaloniaNativePlatform.cs

13
src/Avalonia.Controls/Application.cs

@ -30,7 +30,7 @@ namespace Avalonia
/// method.
/// - Tracks the lifetime of the application.
/// </remarks>
public class Application : AvaloniaObject, IDataContextProvider, IGlobalDataTemplates, IGlobalStyles, IResourceHost
public class Application : AvaloniaObject, IDataContextProvider, IGlobalDataTemplates, IGlobalStyles, IResourceHost, IApplicationPlatformEvents
{
/// <summary>
/// The application-global data templates.
@ -249,15 +249,9 @@ namespace Avalonia
public virtual void OnFrameworkInitializationCompleted()
{
var applicationPlatform = AvaloniaLocator.Current.GetService<IApplicationPlatform>();
if (applicationPlatform != null)
{
applicationPlatform.FilesOpened = OnFilesOpened;
}
}
private void OnFilesOpened(string[] urls)
void IApplicationPlatformEvents.RaiseUrlsOpened(string[] urls)
{
UrlsOpened?.Invoke(this, new UrlOpenedEventArgs (urls));
}
@ -300,5 +294,6 @@ namespace Avalonia
get => _name;
set => SetAndRaise(NameProperty, ref _name, value);
}
}
}

9
src/Avalonia.Controls/Platform/IApplicationPlatform.cs

@ -1,9 +0,0 @@
using System;
namespace Avalonia.Platform
{
public interface IApplicationPlatform
{
Action<string[]> FilesOpened { get; set; }
}
}

7
src/Avalonia.Controls/Platform/IApplicationPlatformEvents.cs

@ -0,0 +1,7 @@
namespace Avalonia.Platform
{
public interface IApplicationPlatformEvents
{
void RaiseUrlsOpened(string[] urls);
}
}

6
src/Avalonia.Native/AvaloniaNativeApplicationPlatform.cs

@ -4,13 +4,11 @@ using Avalonia.Platform;
namespace Avalonia.Native
{
internal class AvaloniaNativeApplicationPlatform : CallbackBase, IApplicationPlatform, IAvnApplicationEvents
internal class AvaloniaNativeApplicationPlatform : CallbackBase, IAvnApplicationEvents
{
public Action<string[]> FilesOpened { get; set; }
void IAvnApplicationEvents.FilesOpened(IAvnStringArray urls)
{
FilesOpened?.Invoke(urls.ToStringArray());
((IApplicationPlatformEvents)Application.Current).RaiseUrlsOpened(urls.ToStringArray());
}
}
}

1
src/Avalonia.Native/AvaloniaNativePlatform.cs

@ -98,7 +98,6 @@ namespace Avalonia.Native
}
AvaloniaLocator.CurrentMutable
.Bind<IApplicationPlatform>().ToConstant(applicationPlatform)
.Bind<IPlatformThreadingInterface>()
.ToConstant(new PlatformThreadingInterface(_factory.CreatePlatformThreadingInterface()))
.Bind<ICursorFactory>().ToConstant(new CursorFactory(_factory.CreateCursorFactory()))

Loading…
Cancel
Save