From 76b2b87c279f8d4f1eccbf55c4bf977aa7409f8a Mon Sep 17 00:00:00 2001 From: Shane Neuville Date: Tue, 29 Jun 2021 14:17:23 -0500 Subject: [PATCH 1/8] Fix Android Shim --- .../AppCompat/FormsAppCompatActivity.cs | 32 ++++++++++++++++--- .../AppCompat/NavigationPageRenderer.cs | 3 +- .../src/Core/AppHostBuilderExtensions.cs | 1 - 3 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/Compatibility/Core/src/Android/AppCompat/FormsAppCompatActivity.cs b/src/Compatibility/Core/src/Android/AppCompat/FormsAppCompatActivity.cs index d034d2a39515..9bd6ce5ff0a5 100644 --- a/src/Compatibility/Core/src/Android/AppCompat/FormsAppCompatActivity.cs +++ b/src/Compatibility/Core/src/Android/AppCompat/FormsAppCompatActivity.cs @@ -203,14 +203,14 @@ void OnCreate( Profile.FramePartition("SetSupportActionBar"); AToolbar bar = null; - if (ToolbarResource == 0) + if (_toolbarResource == 0) { ToolbarResource = Resource.Layout.toolbar; } - if (TabLayoutResource == 0) + if (_tabLayoutResource == 0) { - TabLayoutResource = Resource.Layout.tabbar; + _tabLayoutResource = Resource.Layout.tabbar; } if (ToolbarResource != 0) @@ -504,9 +504,31 @@ internal class DefaultApplication : Application public static event BackButtonPressedEventHandler BackPressed; - public static int TabLayoutResource { get; set; } + static int _tabLayoutResource; + public static int TabLayoutResource + { + get + { + if (_tabLayoutResource == 0) + return Resource.Layout.tabbar; + + return _tabLayoutResource; + } + set => _tabLayoutResource = value; + } - public static int ToolbarResource { get; set; } + static int _toolbarResource; + public static int ToolbarResource + { + get + { + if (_toolbarResource == 0) + return Resource.Layout.toolbar; + + return _toolbarResource; + } + set => _toolbarResource = value; + } #endregion } diff --git a/src/Compatibility/Core/src/Android/AppCompat/NavigationPageRenderer.cs b/src/Compatibility/Core/src/Android/AppCompat/NavigationPageRenderer.cs index bbd11c0e711d..dcb0923242a3 100644 --- a/src/Compatibility/Core/src/Android/AppCompat/NavigationPageRenderer.cs +++ b/src/Compatibility/Core/src/Android/AppCompat/NavigationPageRenderer.cs @@ -958,8 +958,7 @@ void UpdateToolbar() toggle.SyncState(); } - var activity = (AppCompatActivity)context.GetActivity(); - var icon = new DrawerArrowDrawable(activity.SupportActionBar.ThemedContext); + var icon = new DrawerArrowDrawable(context.GetThemedContext()); icon.Progress = 1; bar.NavigationIcon = icon; diff --git a/src/Controls/src/Core/AppHostBuilderExtensions.cs b/src/Controls/src/Core/AppHostBuilderExtensions.cs index 83915a2a011f..2ab41441e5e1 100644 --- a/src/Controls/src/Core/AppHostBuilderExtensions.cs +++ b/src/Controls/src/Core/AppHostBuilderExtensions.cs @@ -12,7 +12,6 @@ public static class AppHostBuilderExtensions { static readonly Dictionary DefaultMauiControlHandlers = new Dictionary { - { typeof(NavigationPage), typeof(NavigationPageHandler) }, #if WINDOWS { typeof(Shell), typeof(ShellHandler) }, #endif From b8b33e92207bfa72dec114a54267fb475c53af87 Mon Sep 17 00:00:00 2001 From: Shane Neuville Date: Tue, 29 Jun 2021 14:40:30 -0500 Subject: [PATCH 2/8] - winui gallery --- .../ControlGallery/src/WinUI/App.xaml | 5 ++-- .../ControlGallery/src/WinUI/App.xaml.cs | 14 +++++++---- .../ControlGallery/src/WinUI/MainPage.xaml | 4 ++-- .../ControlGallery/src/WinUI/MainPage.xaml.cs | 24 +++++++------------ .../Platform/Windows/MauiWinUIApplication.cs | 3 +++ 5 files changed, 26 insertions(+), 24 deletions(-) diff --git a/src/Compatibility/ControlGallery/src/WinUI/App.xaml b/src/Compatibility/ControlGallery/src/WinUI/App.xaml index 71ea354b880d..802ef383631f 100644 --- a/src/Compatibility/ControlGallery/src/WinUI/App.xaml +++ b/src/Compatibility/ControlGallery/src/WinUI/App.xaml @@ -1,4 +1,5 @@ - - + diff --git a/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs b/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs index 98b3f2f1fb58..3f23453ace66 100644 --- a/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs +++ b/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs @@ -21,12 +21,19 @@ namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.WinUI { + public class MiddleApp : MauiWinUIApplication + { + public override UI.Xaml.Window CreateWindow() + { + return base.CreateWindow(); + } + } + /// /// Provides application-specific behavior to supplement the default Application class. /// - sealed partial class App : Microsoft.UI.Xaml.Application + sealed partial class App { - private UI.Xaml.Window m_window; public static bool RunningAsUITests { get; private set; } /// /// Initializes the singleton application object. This is the first line of authored code @@ -51,9 +58,6 @@ protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs e) RunningAsUITests = true; ControlGallery.App.PreloadTestCasesIssuesList = false; } - - m_window = new MainPage(); - Maui.Controls.Compatibility.Forms.Init(m_window as MainPage); } /// diff --git a/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml b/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml index 9596c8b2b670..26d6ef86d354 100644 --- a/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml +++ b/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml @@ -1,4 +1,4 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml.cs b/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml.cs index 44566d44233c..da59a5a2d887 100644 --- a/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml.cs +++ b/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml.cs @@ -22,10 +22,8 @@ namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.WinUI /// /// An empty page that can be used on its own or navigated to within a Frame. /// - public sealed partial class MainPage + public sealed partial class MainPage : UI.Xaml.Window { - ControlGallery.App _app; - public MainPage() { InitializeComponent(); @@ -47,19 +45,12 @@ public MainPage() // When the native binding gallery loads up, it'll let us know so we can set up the native bindings MessagingCenter.Subscribe(this, NativeBindingGalleryPage.ReadyForNativeBindingsMessage, AddNativeBindings); + this.Activated += MainPage_Activated; } - public override Application CreateApplication() - { - _app = new ControlGallery.App(); - return _app; - } - - public override void LoadApplication(Application application) + private void MainPage_Activated(object sender, UI.Xaml.WindowActivatedEventArgs args) { - base.LoadApplication(application); - - _app.PropertyChanged += _app_PropertyChanged; + Application.Current.PropertyChanged += _app_PropertyChanged; WireUpKeyDown(); } @@ -92,12 +83,15 @@ void OnKeyDown(object sender, KeyRoutedEventArgs args) { if (args.Key == VirtualKey.Escape) { - _app.Reset(); + (Application.Current as ControlGallery.App) + .Reset(); + args.Handled = true; } else if (args.Key == VirtualKey.F1) { - _app.PlatformTest(); + (Application.Current as ControlGallery.App) + .PlatformTest(); } } diff --git a/src/Core/src/Platform/Windows/MauiWinUIApplication.cs b/src/Core/src/Platform/Windows/MauiWinUIApplication.cs index 76fb95321f38..a3f784870127 100644 --- a/src/Core/src/Platform/Windows/MauiWinUIApplication.cs +++ b/src/Core/src/Platform/Windows/MauiWinUIApplication.cs @@ -13,6 +13,9 @@ namespace Microsoft.Maui public class MauiWinUIApplication : MauiWinUIApplication where TStartup : IStartup, new() { + public virtual UI.Xaml.Window CreateWindow() => + new MauiWinUIWindow(); + protected override void OnLaunched(UI.Xaml.LaunchActivatedEventArgs args) { LaunchActivatedEventArgs = args; From 92797e6040b8deca3a0e3f8eae96d2fde5cce597 Mon Sep 17 00:00:00 2001 From: Shane Neuville Date: Tue, 29 Jun 2021 16:42:53 -0500 Subject: [PATCH 3/8] - fix up gallery construction --- src/Compatibility/ControlGallery/src/WinUI/App.xaml | 9 +++++---- .../ControlGallery/src/WinUI/App.xaml.cs | 12 +++++++++--- .../ControlGallery/src/WinUI/MainPage.xaml | 5 +++-- .../ControlGallery/src/WinUI/MainPage.xaml.cs | 2 +- src/Compatibility/Core/src/WinUI/Resources.xaml | 2 +- .../src/Platform/Windows/MauiWinUIApplication.cs | 2 ++ 6 files changed, 21 insertions(+), 11 deletions(-) diff --git a/src/Compatibility/ControlGallery/src/WinUI/App.xaml b/src/Compatibility/ControlGallery/src/WinUI/App.xaml index 802ef383631f..9bef4326848a 100644 --- a/src/Compatibility/ControlGallery/src/WinUI/App.xaml +++ b/src/Compatibility/ControlGallery/src/WinUI/App.xaml @@ -7,10 +7,11 @@ - - - - + + + + + diff --git a/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs b/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs index 3f23453ace66..25c097cc5d38 100644 --- a/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs +++ b/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs @@ -23,16 +23,16 @@ namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.WinUI { public class MiddleApp : MauiWinUIApplication { - public override UI.Xaml.Window CreateWindow() + public override MauiWinUIWindow CreateWindow() { - return base.CreateWindow(); + return new MainPage(); } } /// /// Provides application-specific behavior to supplement the default Application class. /// - sealed partial class App + sealed partial class App : MiddleApp { public static bool RunningAsUITests { get; private set; } /// @@ -45,6 +45,11 @@ public App() //Suspending += OnSuspending; } + public override MauiWinUIWindow CreateWindow() + { + return new MainPage(); + } + /// /// Invoked when the application is launched normally by the end user. Other entry points /// will be used such as when the application is launched to open a specific file. @@ -52,6 +57,7 @@ public App() /// Details about the launch request and process. protected override void OnLaunched(Microsoft.UI.Xaml.LaunchActivatedEventArgs e) { + base.OnLaunched(e); if (!String.IsNullOrWhiteSpace(e.Arguments) && e.Arguments.Contains("RunningAsUITests")) { diff --git a/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml b/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml index 26d6ef86d354..4eeb4f561e84 100644 --- a/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml +++ b/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml @@ -1,4 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml.cs b/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml.cs index da59a5a2d887..7f3e58876e9c 100644 --- a/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml.cs +++ b/src/Compatibility/ControlGallery/src/WinUI/MainPage.xaml.cs @@ -22,7 +22,7 @@ namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.WinUI /// /// An empty page that can be used on its own or navigated to within a Frame. /// - public sealed partial class MainPage : UI.Xaml.Window + public sealed partial class MainPage : MauiWinUIWindow { public MainPage() { diff --git a/src/Compatibility/Core/src/WinUI/Resources.xaml b/src/Compatibility/Core/src/WinUI/Resources.xaml index 075e976de3b4..88d1a47350de 100644 --- a/src/Compatibility/Core/src/WinUI/Resources.xaml +++ b/src/Compatibility/Core/src/WinUI/Resources.xaml @@ -49,7 +49,7 @@ - diff --git a/src/Core/src/Platform/Windows/MauiWinUIApplication.cs b/src/Core/src/Platform/Windows/MauiWinUIApplication.cs index a3f784870127..c1614a2d8604 100644 --- a/src/Core/src/Platform/Windows/MauiWinUIApplication.cs +++ b/src/Core/src/Platform/Windows/MauiWinUIApplication.cs @@ -59,6 +59,8 @@ protected override void OnLaunched(UI.Xaml.LaunchActivatedEventArgs args) RootPanel CreateRootContainer() { + Resources.TryGetValue("MauiRootContainerStyle", out object style2); + // TODO WINUI should this be some other known constant or via some mechanism? Or done differently? return Resources.TryGetValue("MauiRootContainerStyle", out object style) ? new RootPanel From 63cbe792902935936db531ab8f008af708115a65 Mon Sep 17 00:00:00 2001 From: Shane Neuville Date: Tue, 29 Jun 2021 17:01:39 -0500 Subject: [PATCH 4/8] - fix ios casting issue --- .../Core/src/iOS/Renderers/NavigationRenderer.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Compatibility/Core/src/iOS/Renderers/NavigationRenderer.cs b/src/Compatibility/Core/src/iOS/Renderers/NavigationRenderer.cs index 19c00188b7ea..abc9d5dd0d3d 100644 --- a/src/Compatibility/Core/src/iOS/Renderers/NavigationRenderer.cs +++ b/src/Compatibility/Core/src/iOS/Renderers/NavigationRenderer.cs @@ -1472,10 +1472,10 @@ public override async void DidMoveToParentViewController(UIViewController parent public override UIViewController ChildViewControllerForStatusBarHidden() { - return (UIViewController)Platform.GetRenderer(Current); + return Platform.GetRenderer(Current).ViewController; } - public override UIViewController ChildViewControllerForHomeIndicatorAutoHidden => (UIViewController)Platform.GetRenderer(Current); + public override UIViewController ChildViewControllerForHomeIndicatorAutoHidden => Platform.GetRenderer(Current).ViewController; void IEffectControlProvider.RegisterEffect(Effect effect) { From b8e06e0dd5b828ef4be9b9669633e9cc865e66ca Mon Sep 17 00:00:00 2001 From: Shane Neuville Date: Tue, 29 Jun 2021 19:30:55 -0500 Subject: [PATCH 5/8] Update App.xaml.cs --- src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs b/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs index 25c097cc5d38..4512356fa916 100644 --- a/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs +++ b/src/Compatibility/ControlGallery/src/WinUI/App.xaml.cs @@ -23,10 +23,6 @@ namespace Microsoft.Maui.Controls.Compatibility.ControlGallery.WinUI { public class MiddleApp : MauiWinUIApplication { - public override MauiWinUIWindow CreateWindow() - { - return new MainPage(); - } } /// From 6b189cb1dbed0fbd99f41f7515533c8591f39d67 Mon Sep 17 00:00:00 2001 From: Shane Neuville Date: Tue, 29 Jun 2021 19:31:45 -0500 Subject: [PATCH 6/8] Update MauiWinUIApplication.cs --- src/Core/src/Platform/Windows/MauiWinUIApplication.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Core/src/Platform/Windows/MauiWinUIApplication.cs b/src/Core/src/Platform/Windows/MauiWinUIApplication.cs index c1614a2d8604..a3f784870127 100644 --- a/src/Core/src/Platform/Windows/MauiWinUIApplication.cs +++ b/src/Core/src/Platform/Windows/MauiWinUIApplication.cs @@ -59,8 +59,6 @@ protected override void OnLaunched(UI.Xaml.LaunchActivatedEventArgs args) RootPanel CreateRootContainer() { - Resources.TryGetValue("MauiRootContainerStyle", out object style2); - // TODO WINUI should this be some other known constant or via some mechanism? Or done differently? return Resources.TryGetValue("MauiRootContainerStyle", out object style) ? new RootPanel From e49be1940238e74d3afa2b45d2a433dd454b309a Mon Sep 17 00:00:00 2001 From: Shane Neuville Date: Tue, 29 Jun 2021 19:32:12 -0500 Subject: [PATCH 7/8] Update Resources.xaml --- src/Compatibility/Core/src/WinUI/Resources.xaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Compatibility/Core/src/WinUI/Resources.xaml b/src/Compatibility/Core/src/WinUI/Resources.xaml index 88d1a47350de..d2f514c9f0ca 100644 --- a/src/Compatibility/Core/src/WinUI/Resources.xaml +++ b/src/Compatibility/Core/src/WinUI/Resources.xaml @@ -49,7 +49,7 @@ - From 2ae83f79b19a9f2cc2e3fb70d6826489fa1cc081 Mon Sep 17 00:00:00 2001 From: Shane Neuville Date: Tue, 29 Jun 2021 19:34:00 -0500 Subject: [PATCH 8/8] Update Resources.xaml --- src/Core/src/Platform/Windows/Styles/Resources.xaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Core/src/Platform/Windows/Styles/Resources.xaml b/src/Core/src/Platform/Windows/Styles/Resources.xaml index 71c4339835af..b3bb2b40bc49 100644 --- a/src/Core/src/Platform/Windows/Styles/Resources.xaml +++ b/src/Core/src/Platform/Windows/Styles/Resources.xaml @@ -18,5 +18,9 @@ true + +