Browse Source

much simpler interface with application class and platform events.

Dan Walmsley 4 years ago
parent
commit
8e6502f222

+ 4 - 9
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);
         }
+        
     }
 }

+ 0 - 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 - 0
src/Avalonia.Controls/Platform/IApplicationPlatformEvents.cs

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

+ 2 - 4
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());
         }
     }
 }

+ 0 - 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()))