diff --git a/src/Controls/samples/Maui.Controls.Sample.Macos/App.cs b/src/Controls/samples/Maui.Controls.Sample.Macos/App.cs index 951686cf8eb3..458818557d9f 100644 --- a/src/Controls/samples/Maui.Controls.Sample.Macos/App.cs +++ b/src/Controls/samples/Maui.Controls.Sample.Macos/App.cs @@ -10,7 +10,14 @@ public class App: Application { public App() { - MainPage = new ContentPage(); + var page = new ContentPage(); + page.Title = "Hello!"; + var label = new Label + { + Text = "Hi Maui" + }; + page.Content = label; + MainPage = page; } } } \ No newline at end of file diff --git a/src/Core/src/Handlers/View/ViewHandlerOfT.Mac.cs b/src/Core/src/Handlers/View/ViewHandlerOfT.Mac.cs index 17823c5c6de1..a1aada656b20 100644 --- a/src/Core/src/Handlers/View/ViewHandlerOfT.Mac.cs +++ b/src/Core/src/Handlers/View/ViewHandlerOfT.Mac.cs @@ -47,24 +47,22 @@ public override Size GetDesiredSize(double widthConstraint, double heightConstra return new Size(widthConstraint, heightConstraint); } - throw new NotImplementedException(); - //var sizeThatFits = nativeView.SizeThatFits(new CoreGraphics.CGSize((float)widthConstraint, (float)heightConstraint)); + var sizeThatFits = nativeView is MauiView mauiView ? mauiView.SizeThatFits(new CoreGraphics.CGSize((float)widthConstraint, (float)heightConstraint)) : nativeView.FittingSize; - //var size = new Size( - // sizeThatFits.Width == float.PositiveInfinity ? double.PositiveInfinity : sizeThatFits.Width, - // sizeThatFits.Height == float.PositiveInfinity ? double.PositiveInfinity : sizeThatFits.Height); + var size = new Size( + sizeThatFits.Width == float.PositiveInfinity ? double.PositiveInfinity : sizeThatFits.Width, + sizeThatFits.Height == float.PositiveInfinity ? double.PositiveInfinity : sizeThatFits.Height); - //if (double.IsInfinity(size.Width) || double.IsInfinity(size.Height)) - //{ - // - // nativeView.SizeToFit(); - // size = new Size(nativeView.Frame.Width, nativeView.Frame.Height); - //} + if (double.IsInfinity(size.Width) || double.IsInfinity(size.Height)) + { + nativeView.SetFrameSize(nativeView.FittingSize); + size = new Size(nativeView.Frame.Width, nativeView.Frame.Height); + } - //var finalWidth = ResolveConstraints(size.Width, VirtualView.Width, VirtualView.MinimumWidth, VirtualView.MaximumWidth); - //var finalHeight = ResolveConstraints(size.Height, VirtualView.Height, VirtualView.MinimumHeight, VirtualView.MaximumHeight); + var finalWidth = ResolveConstraints(size.Width, VirtualView.Width, VirtualView.MinimumWidth, VirtualView.MaximumWidth); + var finalHeight = ResolveConstraints(size.Height, VirtualView.Height, VirtualView.MinimumHeight, VirtualView.MaximumHeight); - //return new Size(finalWidth, finalHeight); + return new Size(finalWidth, finalHeight); } double ResolveConstraints(double measured, double exact, double min, double max) diff --git a/src/Core/src/LifecycleEvents/Mac/MacLifecycle.cs b/src/Core/src/LifecycleEvents/Mac/MacLifecycle.cs index 46649b8e7cef..51adec3cefef 100644 --- a/src/Core/src/LifecycleEvents/Mac/MacLifecycle.cs +++ b/src/Core/src/LifecycleEvents/Mac/MacLifecycle.cs @@ -11,7 +11,7 @@ public static class MacLifecycle public delegate bool FinishedLaunching(NSApplication application, NSDictionary launchOptions); public delegate void OnActivated(NSApplication application); public delegate void OnResignActivation(NSApplication application); - public delegate bool OpenUrl(NSApplication app, NSUrl url, NSDictionary options); + public delegate bool OpenUrls(NSApplication app, NSUrl[] url); //public delegate void PerformActionForShortcutItem(NSApplication application, NSApplicationShortcutItem shortcutItem, UIOperationHandler completionHandler); public delegate void WillEnterForeground(NSApplication application); public delegate void WillTerminate(NSApplication application); diff --git a/src/Core/src/LifecycleEvents/Mac/MacLifecycleBuilderExtensions.cs b/src/Core/src/LifecycleEvents/Mac/MacLifecycleBuilderExtensions.cs index d0df6abcc423..f866d442c566 100644 --- a/src/Core/src/LifecycleEvents/Mac/MacLifecycleBuilderExtensions.cs +++ b/src/Core/src/LifecycleEvents/Mac/MacLifecycleBuilderExtensions.cs @@ -8,7 +8,7 @@ public static class MacLifecycleBuilderExtensions public static IMacLifecycleBuilder FinishedLaunching(this IMacLifecycleBuilder lifecycle, MacLifecycle.FinishedLaunching del) => lifecycle.OnEvent(del); public static IMacLifecycleBuilder OnActivated(this IMacLifecycleBuilder lifecycle, MacLifecycle.OnActivated del) => lifecycle.OnEvent(del); public static IMacLifecycleBuilder OnResignActivation(this IMacLifecycleBuilder lifecycle, MacLifecycle.OnResignActivation del) => lifecycle.OnEvent(del); - public static IMacLifecycleBuilder OpenUrl(this IMacLifecycleBuilder lifecycle, MacLifecycle.OpenUrl del) => lifecycle.OnEvent(del); + public static IMacLifecycleBuilder OpenUrls(this IMacLifecycleBuilder lifecycle, MacLifecycle.OpenUrls del) => lifecycle.OnEvent(del); // public static IMacLifecycleBuilder PerformActionForShortcutItem(this IMacLifecycleBuilder lifecycle, MacLifecycle.PerformActionForShortcutItem del) => lifecycle.OnEvent(del); public static IMacLifecycleBuilder WillEnterForeground(this IMacLifecycleBuilder lifecycle, MacLifecycle.WillEnterForeground del) => lifecycle.OnEvent(del); public static IMacLifecycleBuilder WillTerminate(this IMacLifecycleBuilder lifecycle, MacLifecycle.WillTerminate del) => lifecycle.OnEvent(del); diff --git a/src/Core/src/Platform/Mac/MauiUIApplicationDelegate.cs b/src/Core/src/Platform/Mac/MauiUIApplicationDelegate.cs index c15a82bb824c..96a3aa26588b 100644 --- a/src/Core/src/Platform/Mac/MauiUIApplicationDelegate.cs +++ b/src/Core/src/Platform/Mac/MauiUIApplicationDelegate.cs @@ -78,14 +78,15 @@ NSWindow CreateNativeWindow() public override void OpenUrls(NSApplication application, NSUrl[] urls) { - //var wasHandled = false; + var wasHandled = false; - //Services?.InvokeLifecycleEvents(del => - //{ - // wasHandled = del(application, url, options) || wasHandled; - //}); + Services?.InvokeLifecycleEvents(del => + { + wasHandled = del(application, urls); + }); - //return wasHandled || base.OpenUrl(application, url, options); + if (!wasHandled) + base.OpenUrls(application, urls); } //public override void PerformActionForShortcutItem(NSApplication application, UIApplicationShortcutItem shortcutItem, UIOperationHandler completionHandler) @@ -105,20 +106,20 @@ public override void OpenUrls(NSApplication application, NSUrl[] urls) // return wasHandled || base.ContinueUserActivity(application, userActivity, completionHandler); //} - //public override void OnActivated(NSApplication application) - //{ - // Services?.InvokeLifecycleEvents(del => del(application)); - //} + public override void DidBecomeActive(NSNotification notification) + { + Services?.InvokeLifecycleEvents(del => del(NSApplication.SharedApplication)); + } - //public override void OnResignActivation(NSApplication application) - //{ - // Services?.InvokeLifecycleEvents(del => del(application)); - //} + public override void DidResignActive(NSNotification notification) + { + Services?.InvokeLifecycleEvents(del => del(NSApplication.SharedApplication)); + } - //public override void WillTerminate(NSApplication application) - //{ - // Services?.InvokeLifecycleEvents(del => del(application)); - //} + public override void WillTerminate(NSNotification notification) + { + Services?.InvokeLifecycleEvents(del => del(NSApplication.SharedApplication)); + } //public override void DidEnterBackground(NSApplication application) //{