From 36f3e613d73bda0e5d0cabb00b879f004dcb08ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Sua=CC=81rez?= Date: Mon, 6 Oct 2025 12:33:28 +0200 Subject: [PATCH 1/4] Initial changes --- src/Controls/src/Core/IControlsElement.cs | 47 +++++++++++++--- src/Controls/src/Core/IControlsView.cs | 2 +- .../src/Core/IControlsVisualElement.cs | 53 ++++++++++++++++--- .../AlertManager/AlertManager.Android.cs | 2 +- .../AlertManager/AlertManager.Standard.cs | 2 +- .../Platform/AlertManager/AlertManager.cs | 7 ++- .../Platform/AlertManager/AlertManager.iOS.cs | 2 +- .../Platform/GestureManager/GestureManager.cs | 2 +- .../GesturePlatformManager.Android.cs | 2 +- .../GesturePlatformManager.Standard.cs | 2 +- .../GesturePlatformManager.iOS.cs | 2 +- .../ModalNavigationManager.Android.cs | 2 +- .../ModalNavigationManager.Standard.cs | 2 +- .../ModalNavigationManager.cs | 2 +- .../ModalNavigationManager.iOS.cs | 2 +- .../net-android/PublicAPI.Unshipped.txt | 45 ++++++++++++++++ .../PublicAPI/net-ios/PublicAPI.Unshipped.txt | 42 +++++++++++++++ .../net-maccatalyst/PublicAPI.Unshipped.txt | 42 +++++++++++++++ .../PublicAPI/net/PublicAPI.Unshipped.txt | 40 ++++++++++++++ .../netstandard/PublicAPI.Unshipped.txt | 40 ++++++++++++++ src/Controls/src/Core/Window/Window.cs | 12 +++-- 21 files changed, 322 insertions(+), 30 deletions(-) diff --git a/src/Controls/src/Core/IControlsElement.cs b/src/Controls/src/Core/IControlsElement.cs index 53f34351b7d3..fa4f36cf3a53 100644 --- a/src/Controls/src/Core/IControlsElement.cs +++ b/src/Controls/src/Core/IControlsElement.cs @@ -3,9 +3,44 @@ namespace Microsoft.Maui.Controls { - internal interface IControlsElement : Maui.IElement - { - event EventHandler? HandlerChanging; - event EventHandler? HandlerChanged; - } -} + /// + /// Defines the core interface for elements that participate in handler-based rendering. + /// + /// + /// This interface extends to add handler lifecycle management specific to the Controls layer. + /// Handlers are the bridge between cross-platform Controls elements and platform-specific native views. + /// Implementations of this interface can respond to handler attachment, detachment, and replacement events, + /// enabling cleanup of platform-specific resources and re-initialization when handlers change. + /// + public interface IControlsElement : Maui.IElement + { + /// + /// Occurs when the handler for this element is about to change, before the new handler is set. + /// + /// + /// This event fires before and provides access to both the old and new handler + /// through . This is the appropriate place to perform cleanup + /// operations on the old handler or platform view before they are replaced. The event allows subscribers + /// to react to handler changes before they take effect, enabling proper resource disposal and state transfer. + /// + event EventHandler? HandlerChanging; + + /// + /// Occurs after the handler for this element has been changed and the new handler is fully attached. + /// + /// + /// This event fires after when the handler transition is complete. + /// Subscribers can use this event to initialize resources, set up event handlers, or configure + /// the new platform-specific view. This is commonly used for accessing native platform views + /// after they have been created and attached to the element. + /// Common scenarios include: + /// + /// Accessing the native platform view for customization + /// Setting up platform-specific event subscriptions + /// Initializing platform-dependent resources + /// Responding to handler recreation during hot reload scenarios + /// + /// + event EventHandler? HandlerChanged; + } +} \ No newline at end of file diff --git a/src/Controls/src/Core/IControlsView.cs b/src/Controls/src/Core/IControlsView.cs index 1ecf58782a9c..1dd81a187f0e 100644 --- a/src/Controls/src/Core/IControlsView.cs +++ b/src/Controls/src/Core/IControlsView.cs @@ -7,7 +7,7 @@ namespace Microsoft.Maui.Controls { - internal interface IControlsView : IControlsVisualElement + public interface IControlsView : IControlsVisualElement { } } diff --git a/src/Controls/src/Core/IControlsVisualElement.cs b/src/Controls/src/Core/IControlsVisualElement.cs index 73fd37f65e97..967d15099fac 100644 --- a/src/Controls/src/Core/IControlsVisualElement.cs +++ b/src/Controls/src/Core/IControlsVisualElement.cs @@ -3,10 +3,49 @@ namespace Microsoft.Maui.Controls { - internal interface IControlsVisualElement : IControlsElement, IView - { - event EventHandler? WindowChanged; - Window? Window { get; } - event EventHandler? PlatformContainerViewChanged; - } -} + /// + /// Defines a visual element that can be rendered and interact with platform-specific containers. + /// + /// + /// This interface extends both for logical tree participation and + /// for visual rendering capabilities. It provides window and platform container + /// lifecycle management for visual elements that need to respond to changes in their hosting environment. + /// + public interface IControlsVisualElement : IControlsElement, IView + { + /// + /// Occurs when the property value changes. + /// + /// + /// This event is raised when the visual element is added to or removed from a window, + /// or when the element is moved between windows. Subscribers can use this event to perform + /// initialization or cleanup tasks related to window-specific resources. + /// + event EventHandler? WindowChanged; + + /// + /// Gets the window that contains this visual element, or if the element + /// is not currently part of a window's visual tree. + /// + /// + /// The instance that hosts this element, or + /// if the element is detached from any window. + /// + /// + /// This property traverses up the visual tree to find the containing window. Elements that are not + /// yet added to a page or have been removed from the visual tree will return . + /// + Window? Window { get; } + + /// + /// Occurs when the platform-specific container view that hosts this element changes. + /// + /// + /// This event is raised when the native platform view (e.g., UIView on iOS, Android.Views.View on Android, + /// FrameworkElement on Windows) that contains this element is created, replaced, or destroyed. + /// This is particularly useful for scenarios requiring direct interaction with native views or + /// for responding to platform-specific lifecycle events. + /// + event EventHandler? PlatformContainerViewChanged; + } +} \ No newline at end of file diff --git a/src/Controls/src/Core/Platform/AlertManager/AlertManager.Android.cs b/src/Controls/src/Core/Platform/AlertManager/AlertManager.Android.cs index c2079e7ca66a..551fc97b5b03 100644 --- a/src/Controls/src/Core/Platform/AlertManager/AlertManager.Android.cs +++ b/src/Controls/src/Core/Platform/AlertManager/AlertManager.Android.cs @@ -20,7 +20,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class AlertManager + public partial class AlertManager { private partial IAlertManagerSubscription CreateSubscription(IMauiContext mauiContext) { diff --git a/src/Controls/src/Core/Platform/AlertManager/AlertManager.Standard.cs b/src/Controls/src/Core/Platform/AlertManager/AlertManager.Standard.cs index f482979910a8..2346b4857a05 100644 --- a/src/Controls/src/Core/Platform/AlertManager/AlertManager.Standard.cs +++ b/src/Controls/src/Core/Platform/AlertManager/AlertManager.Standard.cs @@ -3,7 +3,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class AlertManager + public partial class AlertManager { private partial IAlertManagerSubscription CreateSubscription(IMauiContext mauiContext) { diff --git a/src/Controls/src/Core/Platform/AlertManager/AlertManager.cs b/src/Controls/src/Core/Platform/AlertManager/AlertManager.cs index 4b88d36cf7d9..c606f75ae0a3 100644 --- a/src/Controls/src/Core/Platform/AlertManager/AlertManager.cs +++ b/src/Controls/src/Core/Platform/AlertManager/AlertManager.cs @@ -5,7 +5,10 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class AlertManager + /// + /// Manages alert, action sheet, and prompt dialogs for a window. + /// + public partial class AlertManager { readonly Window _window; @@ -65,7 +68,7 @@ public void RequestPageBusy(Page page, bool isBusy) => private partial IAlertManagerSubscription CreateSubscription(IMauiContext mauiContext); - internal interface IAlertManagerSubscription + public interface IAlertManagerSubscription { void OnActionSheetRequested(Page sender, ActionSheetArguments arguments); diff --git a/src/Controls/src/Core/Platform/AlertManager/AlertManager.iOS.cs b/src/Controls/src/Core/Platform/AlertManager/AlertManager.iOS.cs index fae501b1516c..b5e615242360 100644 --- a/src/Controls/src/Core/Platform/AlertManager/AlertManager.iOS.cs +++ b/src/Controls/src/Core/Platform/AlertManager/AlertManager.iOS.cs @@ -11,7 +11,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class AlertManager + public partial class AlertManager { private partial IAlertManagerSubscription CreateSubscription(IMauiContext mauiContext) { diff --git a/src/Controls/src/Core/Platform/GestureManager/GestureManager.cs b/src/Controls/src/Core/Platform/GestureManager/GestureManager.cs index 76e4bbfab657..772db479fffe 100644 --- a/src/Controls/src/Core/Platform/GestureManager/GestureManager.cs +++ b/src/Controls/src/Core/Platform/GestureManager/GestureManager.cs @@ -10,7 +10,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal class GestureManager + public class GestureManager { readonly IControlsView _view; object? _containerView; diff --git a/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Android.cs b/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Android.cs index 01f57405d3f0..d18d2117a6c9 100644 --- a/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Android.cs +++ b/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Android.cs @@ -14,7 +14,7 @@ namespace Microsoft.Maui.Controls.Platform { - class GesturePlatformManager : IDisposable + public class GesturePlatformManager : IDisposable { IViewHandler? _handler; Lazy _scaleDetector; diff --git a/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Standard.cs b/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Standard.cs index 50f7528bea42..233db3176196 100644 --- a/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Standard.cs +++ b/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Standard.cs @@ -2,7 +2,7 @@ namespace Microsoft.Maui.Controls.Platform { - class GesturePlatformManager : IDisposable + public class GesturePlatformManager : IDisposable { public GesturePlatformManager(IViewHandler handler) { diff --git a/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.iOS.cs b/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.iOS.cs index d7eb9d13fd61..6b8c88107a64 100644 --- a/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.iOS.cs +++ b/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.iOS.cs @@ -17,7 +17,7 @@ namespace Microsoft.Maui.Controls.Platform { - class GesturePlatformManager : IDisposable + public class GesturePlatformManager : IDisposable { readonly NotifyCollectionChangedEventHandler _collectionChangedHandler; diff --git a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Android.cs b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Android.cs index 2e6b7bf29e9b..520be65e5170 100644 --- a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Android.cs +++ b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Android.cs @@ -17,7 +17,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class ModalNavigationManager + public partial class ModalNavigationManager { ViewGroup? _modalParentView; AAnimation? _dismissAnimation; diff --git a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Standard.cs b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Standard.cs index b04e70c83754..ce73f2122a01 100644 --- a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Standard.cs +++ b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Standard.cs @@ -6,7 +6,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class ModalNavigationManager + public partial class ModalNavigationManager { Task PopModalPlatformAsync(bool animated) { diff --git a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.cs b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.cs index 6d7e171801f9..f9d8c61f2e13 100644 --- a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.cs +++ b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.cs @@ -7,7 +7,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class ModalNavigationManager + public partial class ModalNavigationManager { Window _window; public IReadOnlyList ModalStack => _modalPages.Pages; diff --git a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.iOS.cs b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.iOS.cs index b0bf46458090..a7777394d9dd 100644 --- a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.iOS.cs +++ b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.iOS.cs @@ -10,7 +10,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class ModalNavigationManager + public partial class ModalNavigationManager { // We need to wait for the window to be activated the first time before // we push any modal views. diff --git a/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt index 32a21e9da66a..0eb67ea50faf 100644 --- a/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt +++ b/src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt @@ -30,6 +30,51 @@ Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.get -> Microsoft.Maui.SafeArea Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.set -> void Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.get -> bool Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.set -> void +Microsoft.Maui.Controls.IControlsElement +Microsoft.Maui.Controls.IControlsElement.HandlerChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsElement.HandlerChanging -> System.EventHandler? +Microsoft.Maui.Controls.IControlsView +Microsoft.Maui.Controls.IControlsVisualElement +Microsoft.Maui.Controls.IControlsVisualElement.PlatformContainerViewChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsVisualElement.Window.get -> Microsoft.Maui.Controls.Window? +Microsoft.Maui.Controls.IControlsVisualElement.WindowChanged -> System.EventHandler? +Microsoft.Maui.Controls.Platform.AlertManager +Microsoft.Maui.Controls.Platform.AlertManager.AlertManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnActionSheetRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnAlertRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPageBusy(Microsoft.Maui.Controls.Page! sender, bool enabled) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPromptRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestActionSheet(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestAlert(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPageBusy(Microsoft.Maui.Controls.Page! page, bool isBusy) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPrompt(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscription.get -> Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription? +Microsoft.Maui.Controls.Platform.AlertManager.Unsubscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Window.get -> Microsoft.Maui.Controls.Window! +Microsoft.Maui.Controls.Platform.GestureManager +Microsoft.Maui.Controls.Platform.GestureManager.GestureManager(Microsoft.Maui.Controls.IControlsView! view) -> void +Microsoft.Maui.Controls.Platform.GestureManager.GesturePlatformManager.get -> Microsoft.Maui.Controls.Platform.GesturePlatformManager? +Microsoft.Maui.Controls.Platform.GestureManager.IsConnected.get -> bool +Microsoft.Maui.Controls.Platform.GesturePlatformManager +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Dispose() -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Dispose(bool disposing) -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.GesturePlatformManager(Microsoft.Maui.IViewHandler! handler) -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.OnTouchEvent(Android.Views.MotionEvent! e) -> bool +Microsoft.Maui.Controls.Platform.ModalNavigationManager +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalNavigationManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalStack.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PageAttachedHandler() -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync() -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync(bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal, bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Window.AlertManager.get -> Microsoft.Maui.Controls.Platform.AlertManager! +Microsoft.Maui.Controls.Window.ModalNavigationManager.get -> Microsoft.Maui.Controls.Platform.ModalNavigationManager! +virtual Microsoft.Maui.Controls.Platform.GesturePlatformManager.Control.get -> Android.Views.View? +virtual Microsoft.Maui.Controls.Platform.GesturePlatformManager.Control.set -> void +virtual Microsoft.Maui.Controls.Platform.GesturePlatformManager.Element.get -> Microsoft.Maui.Controls.VisualElement? ~Microsoft.Maui.Controls.ContentPresenter.Children.get -> System.Collections.Generic.IReadOnlyList ~Microsoft.Maui.Controls.ContentPresenter.LowerChild(Microsoft.Maui.Controls.View view) -> void Microsoft.Maui.Controls.ContentPresenter.Padding.get -> Microsoft.Maui.Thickness diff --git a/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt index 869def3ea434..ee0670caece7 100644 --- a/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt +++ b/src/Controls/src/Core/PublicAPI/net-ios/PublicAPI.Unshipped.txt @@ -33,6 +33,48 @@ Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.get -> Microsoft.Maui.SafeArea Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.set -> void Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.get -> bool Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.set -> void +Microsoft.Maui.Controls.IControlsElement +Microsoft.Maui.Controls.IControlsElement.HandlerChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsElement.HandlerChanging -> System.EventHandler? +Microsoft.Maui.Controls.IControlsView +Microsoft.Maui.Controls.IControlsVisualElement +Microsoft.Maui.Controls.IControlsVisualElement.PlatformContainerViewChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsVisualElement.Window.get -> Microsoft.Maui.Controls.Window? +Microsoft.Maui.Controls.IControlsVisualElement.WindowChanged -> System.EventHandler? +Microsoft.Maui.Controls.Platform.AlertManager +Microsoft.Maui.Controls.Platform.AlertManager.AlertManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnActionSheetRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnAlertRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPageBusy(Microsoft.Maui.Controls.Page! sender, bool enabled) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPromptRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestActionSheet(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestAlert(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPageBusy(Microsoft.Maui.Controls.Page! page, bool isBusy) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPrompt(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscription.get -> Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription? +Microsoft.Maui.Controls.Platform.AlertManager.Unsubscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Window.get -> Microsoft.Maui.Controls.Window! +Microsoft.Maui.Controls.Platform.GestureManager +Microsoft.Maui.Controls.Platform.GestureManager.GestureManager(Microsoft.Maui.Controls.IControlsView! view) -> void +Microsoft.Maui.Controls.Platform.GestureManager.GesturePlatformManager.get -> Microsoft.Maui.Controls.Platform.GesturePlatformManager? +Microsoft.Maui.Controls.Platform.GestureManager.IsConnected.get -> bool +Microsoft.Maui.Controls.Platform.GesturePlatformManager +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Dispose() -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.GesturePlatformManager(Microsoft.Maui.IViewHandler! handler) -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalNavigationManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalStack.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PageAttachedHandler() -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync() -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync(bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal, bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Window.AlertManager.get -> Microsoft.Maui.Controls.Platform.AlertManager! +Microsoft.Maui.Controls.Window.ModalNavigationManager.get -> Microsoft.Maui.Controls.Platform.ModalNavigationManager! +virtual Microsoft.Maui.Controls.Platform.GesturePlatformManager.GetPlatformRecognizer(Microsoft.Maui.Controls.IGestureRecognizer! recognizer) -> System.Collections.Generic.List? +virtual Microsoft.Maui.Controls.Platform.GesturePlatformManager.PlatformView.get -> UIKit.UIView? ~Microsoft.Maui.Controls.ContentPresenter.Children.get -> System.Collections.Generic.IReadOnlyList ~Microsoft.Maui.Controls.ContentPresenter.LowerChild(Microsoft.Maui.Controls.View view) -> void Microsoft.Maui.Controls.ContentPresenter.Padding.get -> Microsoft.Maui.Thickness diff --git a/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt index 869def3ea434..ee0670caece7 100644 --- a/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt +++ b/src/Controls/src/Core/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt @@ -33,6 +33,48 @@ Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.get -> Microsoft.Maui.SafeArea Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.set -> void Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.get -> bool Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.set -> void +Microsoft.Maui.Controls.IControlsElement +Microsoft.Maui.Controls.IControlsElement.HandlerChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsElement.HandlerChanging -> System.EventHandler? +Microsoft.Maui.Controls.IControlsView +Microsoft.Maui.Controls.IControlsVisualElement +Microsoft.Maui.Controls.IControlsVisualElement.PlatformContainerViewChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsVisualElement.Window.get -> Microsoft.Maui.Controls.Window? +Microsoft.Maui.Controls.IControlsVisualElement.WindowChanged -> System.EventHandler? +Microsoft.Maui.Controls.Platform.AlertManager +Microsoft.Maui.Controls.Platform.AlertManager.AlertManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnActionSheetRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnAlertRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPageBusy(Microsoft.Maui.Controls.Page! sender, bool enabled) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPromptRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestActionSheet(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestAlert(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPageBusy(Microsoft.Maui.Controls.Page! page, bool isBusy) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPrompt(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscription.get -> Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription? +Microsoft.Maui.Controls.Platform.AlertManager.Unsubscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Window.get -> Microsoft.Maui.Controls.Window! +Microsoft.Maui.Controls.Platform.GestureManager +Microsoft.Maui.Controls.Platform.GestureManager.GestureManager(Microsoft.Maui.Controls.IControlsView! view) -> void +Microsoft.Maui.Controls.Platform.GestureManager.GesturePlatformManager.get -> Microsoft.Maui.Controls.Platform.GesturePlatformManager? +Microsoft.Maui.Controls.Platform.GestureManager.IsConnected.get -> bool +Microsoft.Maui.Controls.Platform.GesturePlatformManager +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Dispose() -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.GesturePlatformManager(Microsoft.Maui.IViewHandler! handler) -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalNavigationManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalStack.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PageAttachedHandler() -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync() -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync(bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal, bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Window.AlertManager.get -> Microsoft.Maui.Controls.Platform.AlertManager! +Microsoft.Maui.Controls.Window.ModalNavigationManager.get -> Microsoft.Maui.Controls.Platform.ModalNavigationManager! +virtual Microsoft.Maui.Controls.Platform.GesturePlatformManager.GetPlatformRecognizer(Microsoft.Maui.Controls.IGestureRecognizer! recognizer) -> System.Collections.Generic.List? +virtual Microsoft.Maui.Controls.Platform.GesturePlatformManager.PlatformView.get -> UIKit.UIView? ~Microsoft.Maui.Controls.ContentPresenter.Children.get -> System.Collections.Generic.IReadOnlyList ~Microsoft.Maui.Controls.ContentPresenter.LowerChild(Microsoft.Maui.Controls.View view) -> void Microsoft.Maui.Controls.ContentPresenter.Padding.get -> Microsoft.Maui.Thickness diff --git a/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt index 83dab46327ec..93d813740822 100644 --- a/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt +++ b/src/Controls/src/Core/PublicAPI/net/PublicAPI.Unshipped.txt @@ -30,6 +30,46 @@ Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.get -> Microsoft.Maui.SafeArea Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.set -> void Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.get -> bool Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.set -> void +Microsoft.Maui.Controls.IControlsElement +Microsoft.Maui.Controls.IControlsElement.HandlerChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsElement.HandlerChanging -> System.EventHandler? +Microsoft.Maui.Controls.IControlsView +Microsoft.Maui.Controls.IControlsVisualElement +Microsoft.Maui.Controls.IControlsVisualElement.PlatformContainerViewChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsVisualElement.Window.get -> Microsoft.Maui.Controls.Window? +Microsoft.Maui.Controls.IControlsVisualElement.WindowChanged -> System.EventHandler? +Microsoft.Maui.Controls.Platform.AlertManager +Microsoft.Maui.Controls.Platform.AlertManager.AlertManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnActionSheetRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnAlertRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPageBusy(Microsoft.Maui.Controls.Page! sender, bool enabled) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPromptRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestActionSheet(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestAlert(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPageBusy(Microsoft.Maui.Controls.Page! page, bool isBusy) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPrompt(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscription.get -> Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription? +Microsoft.Maui.Controls.Platform.AlertManager.Unsubscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Window.get -> Microsoft.Maui.Controls.Window! +Microsoft.Maui.Controls.Platform.GestureManager +Microsoft.Maui.Controls.Platform.GestureManager.GestureManager(Microsoft.Maui.Controls.IControlsView! view) -> void +Microsoft.Maui.Controls.Platform.GestureManager.GesturePlatformManager.get -> Microsoft.Maui.Controls.Platform.GesturePlatformManager? +Microsoft.Maui.Controls.Platform.GestureManager.IsConnected.get -> bool +Microsoft.Maui.Controls.Platform.GesturePlatformManager +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Dispose() -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.GesturePlatformManager(Microsoft.Maui.IViewHandler! handler) -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalNavigationManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalStack.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PageAttachedHandler() -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync() -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync(bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal, bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Window.AlertManager.get -> Microsoft.Maui.Controls.Platform.AlertManager! +Microsoft.Maui.Controls.Window.ModalNavigationManager.get -> Microsoft.Maui.Controls.Platform.ModalNavigationManager! ~Microsoft.Maui.Controls.ContentPresenter.Children.get -> System.Collections.Generic.IReadOnlyList ~Microsoft.Maui.Controls.ContentPresenter.LowerChild(Microsoft.Maui.Controls.View view) -> void Microsoft.Maui.Controls.ContentPresenter.Padding.get -> Microsoft.Maui.Thickness diff --git a/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt index 1b1d6e3c4a4a..af529191869a 100644 --- a/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt +++ b/src/Controls/src/Core/PublicAPI/netstandard/PublicAPI.Unshipped.txt @@ -30,6 +30,46 @@ Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.get -> Microsoft.Maui.SafeArea Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.set -> void Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.get -> bool Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.set -> void +Microsoft.Maui.Controls.IControlsElement +Microsoft.Maui.Controls.IControlsElement.HandlerChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsElement.HandlerChanging -> System.EventHandler? +Microsoft.Maui.Controls.IControlsView +Microsoft.Maui.Controls.IControlsVisualElement +Microsoft.Maui.Controls.IControlsVisualElement.PlatformContainerViewChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsVisualElement.Window.get -> Microsoft.Maui.Controls.Window? +Microsoft.Maui.Controls.IControlsVisualElement.WindowChanged -> System.EventHandler? +Microsoft.Maui.Controls.Platform.AlertManager +Microsoft.Maui.Controls.Platform.AlertManager.AlertManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnActionSheetRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnAlertRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPageBusy(Microsoft.Maui.Controls.Page! sender, bool enabled) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPromptRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestActionSheet(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestAlert(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPageBusy(Microsoft.Maui.Controls.Page! page, bool isBusy) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPrompt(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscription.get -> Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription? +Microsoft.Maui.Controls.Platform.AlertManager.Unsubscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Window.get -> Microsoft.Maui.Controls.Window! +Microsoft.Maui.Controls.Platform.GestureManager +Microsoft.Maui.Controls.Platform.GestureManager.GestureManager(Microsoft.Maui.Controls.IControlsView! view) -> void +Microsoft.Maui.Controls.Platform.GestureManager.GesturePlatformManager.get -> Microsoft.Maui.Controls.Platform.GesturePlatformManager? +Microsoft.Maui.Controls.Platform.GestureManager.IsConnected.get -> bool +Microsoft.Maui.Controls.Platform.GesturePlatformManager +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Dispose() -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.GesturePlatformManager(Microsoft.Maui.IViewHandler! handler) -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalNavigationManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalStack.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PageAttachedHandler() -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync() -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync(bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal, bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Window.AlertManager.get -> Microsoft.Maui.Controls.Platform.AlertManager! +Microsoft.Maui.Controls.Window.ModalNavigationManager.get -> Microsoft.Maui.Controls.Platform.ModalNavigationManager! override Microsoft.Maui.Controls.CheckBox.IsEnabledCore.get -> bool ~Microsoft.Maui.Controls.CheckBox.Command.get -> System.Windows.Input.ICommand ~Microsoft.Maui.Controls.CheckBox.Command.set -> void diff --git a/src/Controls/src/Core/Window/Window.cs b/src/Controls/src/Core/Window/Window.cs index 9c0015232793..4431843a5179 100644 --- a/src/Controls/src/Core/Window/Window.cs +++ b/src/Controls/src/Core/Window/Window.cs @@ -328,9 +328,15 @@ public bool RemoveOverlay(IWindowOverlay overlay) return result; } - internal AlertManager AlertManager { get; } - - internal ModalNavigationManager ModalNavigationManager { get; } + /// + /// Gets the alert manager for this window, which handles alert, action sheet, and prompt dialogs. + /// + public AlertManager AlertManager { get; } + + /// + /// Gets the modal navigation manager for this window, which handles the modal page stack. + /// + public ModalNavigationManager ModalNavigationManager { get; } internal IMauiContext MauiContext => Handler?.MauiContext ?? throw new InvalidOperationException("MauiContext is null."); From 43709084ea4c7626f08bc2100fd09f40c1e2753c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Su=C3=A1rez?= Date: Mon, 6 Oct 2025 13:36:40 +0200 Subject: [PATCH 2/4] More changes --- .../src/Core/Platform/AlertManager/AlertManager.Windows.cs | 2 +- .../src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Controls/src/Core/Platform/AlertManager/AlertManager.Windows.cs b/src/Controls/src/Core/Platform/AlertManager/AlertManager.Windows.cs index 5073c663fff0..835ae9db2281 100644 --- a/src/Controls/src/Core/Platform/AlertManager/AlertManager.Windows.cs +++ b/src/Controls/src/Core/Platform/AlertManager/AlertManager.Windows.cs @@ -8,7 +8,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class AlertManager + public partial class AlertManager { private partial IAlertManagerSubscription CreateSubscription(IMauiContext mauiContext) { diff --git a/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt index b2acc61e5c3f..91d5ca99c9bd 100644 --- a/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt +++ b/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt @@ -30,6 +30,7 @@ Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.get -> Microsoft.Maui.SafeArea Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.set -> void Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.get -> bool Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.set -> void +Microsoft.Maui.Controls.Platform.AlertManager ~Microsoft.Maui.Controls.ContentPresenter.Children.get -> System.Collections.Generic.IReadOnlyList ~Microsoft.Maui.Controls.ContentPresenter.LowerChild(Microsoft.Maui.Controls.View view) -> void Microsoft.Maui.Controls.ContentPresenter.Padding.get -> Microsoft.Maui.Thickness From 1c0ed89f4c66e5d865ffbdd20ac7c68561a34913 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Su=C3=A1rez?= Date: Fri, 17 Oct 2025 13:46:47 +0200 Subject: [PATCH 3/4] More changes --- .../Platform/GestureManager/GesturePlatformManager.Windows.cs | 2 +- .../ModalNavigationManager/ModalNavigationManager.Tizen.cs | 2 +- .../ModalNavigationManager/ModalNavigationManager.Windows.cs | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Windows.cs b/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Windows.cs index c4306ddc8f79..e97f6ebf38fe 100644 --- a/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Windows.cs +++ b/src/Controls/src/Core/Platform/GestureManager/GesturePlatformManager.Windows.cs @@ -15,7 +15,7 @@ namespace Microsoft.Maui.Controls.Platform { - class GesturePlatformManager : IDisposable + public class GesturePlatformManager : IDisposable { readonly IPlatformViewHandler _handler; readonly NotifyCollectionChangedEventHandler _collectionChangedHandler; diff --git a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Tizen.cs b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Tizen.cs index f94d7a93c1d0..9147c3f43e63 100644 --- a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Tizen.cs +++ b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Tizen.cs @@ -5,7 +5,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class ModalNavigationManager + public partial class ModalNavigationManager { NavigationStack _modalStack => WindowMauiContext.GetModalStack(); IPageController CurrentPageController => CurrentPage!; diff --git a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Windows.cs b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Windows.cs index 4c4401d8cd09..c47920a022e4 100644 --- a/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Windows.cs +++ b/src/Controls/src/Core/Platform/ModalNavigationManager/ModalNavigationManager.Windows.cs @@ -5,7 +5,7 @@ namespace Microsoft.Maui.Controls.Platform { - internal partial class ModalNavigationManager + public partial class ModalNavigationManager { WindowRootViewContainer Container => _window.NativeWindow.Content as WindowRootViewContainer ?? From 21818fbed28a7cb9a64364173c21001bdf4eaa9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javier=20Su=C3=A1rez?= Date: Mon, 20 Oct 2025 16:00:33 +0200 Subject: [PATCH 4/4] More publicAPI changes --- .../net-windows/PublicAPI.Unshipped.txt | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt b/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt index 91d5ca99c9bd..8b26a5f2e469 100644 --- a/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt +++ b/src/Controls/src/Core/PublicAPI/net-windows/PublicAPI.Unshipped.txt @@ -30,7 +30,54 @@ Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.get -> Microsoft.Maui.SafeArea Microsoft.Maui.Controls.ContentPage.SafeAreaEdges.set -> void Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.get -> bool Microsoft.Maui.Controls.ContentPresenter.CascadeInputTransparent.set -> void +Microsoft.Maui.Controls.IControlsElement +Microsoft.Maui.Controls.IControlsElement.HandlerChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsElement.HandlerChanging -> System.EventHandler? +Microsoft.Maui.Controls.IControlsView +Microsoft.Maui.Controls.IControlsVisualElement +Microsoft.Maui.Controls.IControlsVisualElement.PlatformContainerViewChanged -> System.EventHandler? +Microsoft.Maui.Controls.IControlsVisualElement.Window.get -> Microsoft.Maui.Controls.Window? +Microsoft.Maui.Controls.IControlsVisualElement.WindowChanged -> System.EventHandler? Microsoft.Maui.Controls.Platform.AlertManager +Microsoft.Maui.Controls.Platform.AlertManager.AlertManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnActionSheetRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnAlertRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPageBusy(Microsoft.Maui.Controls.Page! sender, bool enabled) -> void +Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription.OnPromptRequested(Microsoft.Maui.Controls.Page! sender, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestActionSheet(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.ActionSheetArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestAlert(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.AlertArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPageBusy(Microsoft.Maui.Controls.Page! page, bool isBusy) -> void +Microsoft.Maui.Controls.Platform.AlertManager.RequestPrompt(Microsoft.Maui.Controls.Page! page, Microsoft.Maui.Controls.Internals.PromptArguments! arguments) -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Subscription.get -> Microsoft.Maui.Controls.Platform.AlertManager.IAlertManagerSubscription? +Microsoft.Maui.Controls.Platform.AlertManager.Unsubscribe() -> void +Microsoft.Maui.Controls.Platform.AlertManager.Window.get -> Microsoft.Maui.Controls.Window! +Microsoft.Maui.Controls.Platform.GestureManager +Microsoft.Maui.Controls.Platform.GestureManager.GestureManager(Microsoft.Maui.Controls.IControlsView! view) -> void +Microsoft.Maui.Controls.Platform.GestureManager.GesturePlatformManager.get -> Microsoft.Maui.Controls.Platform.GesturePlatformManager? +Microsoft.Maui.Controls.Platform.GestureManager.IsConnected.get -> bool +Microsoft.Maui.Controls.Platform.GesturePlatformManager +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Container.get -> Microsoft.UI.Xaml.FrameworkElement? +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Container.set -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Control.get -> Microsoft.UI.Xaml.FrameworkElement? +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Control.set -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Dispose() -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Element.get -> Microsoft.Maui.Controls.VisualElement? +Microsoft.Maui.Controls.Platform.GesturePlatformManager.Element.set -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.GesturePlatformManager(Microsoft.Maui.IViewHandler! handler) -> void +Microsoft.Maui.Controls.Platform.GesturePlatformManager.PreventGestureBubbling.get -> bool +Microsoft.Maui.Controls.Platform.ModalNavigationManager +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalNavigationManager(Microsoft.Maui.Controls.Window! window) -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.ModalStack.get -> System.Collections.Generic.IReadOnlyList! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PageAttachedHandler() -> void +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync() -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PopModalAsync(bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Platform.ModalNavigationManager.PushModalAsync(Microsoft.Maui.Controls.Page! modal, bool animated) -> System.Threading.Tasks.Task! +Microsoft.Maui.Controls.Window.AlertManager.get -> Microsoft.Maui.Controls.Platform.AlertManager! +Microsoft.Maui.Controls.Window.ModalNavigationManager.get -> Microsoft.Maui.Controls.Platform.ModalNavigationManager! +virtual Microsoft.Maui.Controls.Platform.GesturePlatformManager.Dispose(bool disposing) -> void ~Microsoft.Maui.Controls.ContentPresenter.Children.get -> System.Collections.Generic.IReadOnlyList ~Microsoft.Maui.Controls.ContentPresenter.LowerChild(Microsoft.Maui.Controls.View view) -> void Microsoft.Maui.Controls.ContentPresenter.Padding.get -> Microsoft.Maui.Thickness