diff --git a/.github/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md index 91d2e404ff17..28e6d6272869 100644 --- a/.github/CODE_OF_CONDUCT.md +++ b/.github/CODE_OF_CONDUCT.md @@ -3,4 +3,4 @@ This project has adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community. -For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct). \ No newline at end of file +For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/about/policies/code-of-conduct). diff --git a/Assets/icon.png b/Assets/icon.png new file mode 100644 index 000000000000..2d893247faa4 Binary files /dev/null and b/Assets/icon.png differ diff --git a/eng/Versions.props b/eng/Versions.props index 20042eeab91f..31cac336c8d2 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -39,7 +39,7 @@ 7.0.0 7.0.0 - 7.0.0-preview1.22553.2 + 7.0.0-preview1.22559.1 3.3.3 3.3.3 4.5.0 diff --git a/src/Controls/Foldable/src/Controls.Foldable.csproj b/src/Controls/Foldable/src/Controls.Foldable.csproj index 585e7a8f9fd1..1939da6c35bc 100644 --- a/src/Controls/Foldable/src/Controls.Foldable.csproj +++ b/src/Controls/Foldable/src/Controls.Foldable.csproj @@ -4,12 +4,18 @@ Microsoft.Maui.Controls.Foldable Microsoft.Maui.Controls.Foldable BI1234 - true false true $(NoWarn);CS1591 - true + + + True + git + dotnet-maui;maui;foldable;android;surface-duo + .NET MAUI Foldable + .NET MAUI Foldable provides additional APIs to better support foldable mobile devices. + icon.png @@ -31,4 +37,9 @@ + + + + + diff --git a/src/Controls/Maps/src/Controls.Maps.csproj b/src/Controls/Maps/src/Controls.Maps.csproj index 586e2fd56e58..a1e02d622a5e 100644 --- a/src/Controls/Maps/src/Controls.Maps.csproj +++ b/src/Controls/Maps/src/Controls.Maps.csproj @@ -4,12 +4,19 @@ netstandard2.1;netstandard2.0;$(_MauiDotNetTfm);$(MauiPlatforms) Microsoft.Maui.Controls.Maps Microsoft.Maui.Controls.Maps - true false enable <_MauiDesignDllBuild Condition=" '$(OS)' != 'Unix' ">True true $(NoWarn);CS1591;RS0041;RS0026;RS0027;RS0022 + + + True + git + dotnet-maui;maui;maps;map;ios;android;macos + .NET MAUI Maps + .NET MAUI Maps provides a map control for .NET MAUI apps. + icon.png @@ -19,5 +26,9 @@ - + + + + + \ No newline at end of file diff --git a/src/Controls/src/Core.Design/Controls.Core.Design.csproj b/src/Controls/src/Core.Design/Controls.Core.Design.csproj index b7952704efd3..b1874cbc0cca 100644 --- a/src/Controls/src/Core.Design/Controls.Core.Design.csproj +++ b/src/Controls/src/Core.Design/Controls.Core.Design.csproj @@ -27,7 +27,7 @@ - + diff --git a/src/Controls/src/Core/Entry.cs b/src/Controls/src/Core/Entry.cs index 2f3a3c125cb6..f07c610cdd84 100644 --- a/src/Controls/src/Core/Entry.cs +++ b/src/Controls/src/Core/Entry.cs @@ -94,9 +94,9 @@ public partial class Entry : InputView, IFontElement, ITextAlignmentElement, IEn public static readonly BindableProperty SelectionLengthProperty = BindableProperty.Create(nameof(SelectionLength), typeof(int), typeof(Entry), 0, validateValue: (b, v) => (int)v >= 0); /// - /// Backing store for the property. + /// Backing store for the property. /// - public static readonly BindableProperty ClearButtonVisibilityProperty = BindableProperty.Create(nameof(SelectionLength), typeof(ClearButtonVisibility), typeof(Entry), ClearButtonVisibility.Never); + public static readonly BindableProperty ClearButtonVisibilityProperty = BindableProperty.Create(nameof(ClearButtonVisibility), typeof(ClearButtonVisibility), typeof(Entry), ClearButtonVisibility.Never); readonly Lazy> _platformConfigurationRegistry; diff --git a/src/Controls/src/Xaml.Design/Controls.Xaml.Design.csproj b/src/Controls/src/Xaml.Design/Controls.Xaml.Design.csproj index bca74b09ab3f..47c415798e3a 100644 --- a/src/Controls/src/Xaml.Design/Controls.Xaml.Design.csproj +++ b/src/Controls/src/Xaml.Design/Controls.Xaml.Design.csproj @@ -13,7 +13,7 @@ - 17.3.32804.24 + 17.4.33103.184 \ No newline at end of file diff --git a/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj b/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj index 3bc68402e967..3cc30f3dba99 100644 --- a/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj +++ b/src/Controls/tests/Core.Design.UnitTests/Controls.Core.Design.UnitTests.csproj @@ -13,7 +13,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + diff --git a/src/Core/maps/src/Maps.csproj b/src/Core/maps/src/Maps.csproj index 7392f9b1d0a8..62b1c8b7d085 100644 --- a/src/Core/maps/src/Maps.csproj +++ b/src/Core/maps/src/Maps.csproj @@ -5,10 +5,17 @@ Microsoft.Maui.Maps Microsoft.Maui.Maps enable - true false true $(NoWarn);CS1591;RS0041;RS0026;RS0027 + + + True + git + dotnet-maui;maui;maps;map;ios;android;macos + .NET MAUI Maps Core + .NET MAUI Maps provides a map control for .NET MAUI apps. This only contains the core types. If you want the Map control, please install the Microsoft.Maui.Controls.Maps package. + icon.png @@ -29,4 +36,9 @@ + + + + + diff --git a/src/Core/src/Handlers/Switch/SwitchHandler.iOS.cs b/src/Core/src/Handlers/Switch/SwitchHandler.iOS.cs index 6105ece0359c..a9e5decd479b 100644 --- a/src/Core/src/Handlers/Switch/SwitchHandler.iOS.cs +++ b/src/Core/src/Handlers/Switch/SwitchHandler.iOS.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.Maui.Graphics; using ObjCRuntime; using UIKit; using RectangleF = CoreGraphics.CGRect; @@ -7,6 +8,12 @@ namespace Microsoft.Maui.Handlers { public partial class SwitchHandler : ViewHandler { + // the UISwitch control becomes inaccessible if it grows to a width > 101 + // An issue has been logged with Apple + // This ensures that the UISwitch remains the natural size that iOS expects + // But the container can be used for setting BGColors and other features. + public override bool NeedsContainer => true; + protected override UISwitch CreatePlatformView() { return new UISwitch(RectangleF.Empty); diff --git a/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt index 82598e660068..64ee29a45043 100644 --- a/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt +++ b/src/Core/src/PublicAPI/net-ios/PublicAPI.Unshipped.txt @@ -133,6 +133,7 @@ override Microsoft.Maui.Handlers.ScrollViewHandler.PlatformArrange(Microsoft.Mau override Microsoft.Maui.Handlers.MenuFlyoutSeparatorHandler.CreatePlatformElement() -> UIKit.UIMenu! override Microsoft.Maui.Handlers.EditorHandler.SetVirtualView(Microsoft.Maui.IView! view) -> void override Microsoft.Maui.Handlers.EntryHandler.SetVirtualView(Microsoft.Maui.IView! view) -> void +override Microsoft.Maui.Handlers.SwitchHandler.NeedsContainer.get -> bool override Microsoft.Maui.Handlers.WindowHandler.ConnectHandler(UIKit.UIWindow! platformView) -> void override Microsoft.Maui.Platform.ContentView.SetNeedsLayout() -> void override Microsoft.Maui.Platform.LayoutView.HitTest(CoreGraphics.CGPoint point, UIKit.UIEvent? uievent) -> UIKit.UIView! diff --git a/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt b/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt index 2c8028606eea..5a2eceae9b51 100644 --- a/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt +++ b/src/Core/src/PublicAPI/net-maccatalyst/PublicAPI.Unshipped.txt @@ -133,6 +133,7 @@ override Microsoft.Maui.Handlers.ScrollViewHandler.PlatformArrange(Microsoft.Mau override Microsoft.Maui.Handlers.MenuFlyoutSeparatorHandler.CreatePlatformElement() -> UIKit.UIMenu! override Microsoft.Maui.Handlers.EditorHandler.SetVirtualView(Microsoft.Maui.IView! view) -> void override Microsoft.Maui.Handlers.EntryHandler.SetVirtualView(Microsoft.Maui.IView! view) -> void +override Microsoft.Maui.Handlers.SwitchHandler.NeedsContainer.get -> bool override Microsoft.Maui.Handlers.WindowHandler.ConnectHandler(UIKit.UIWindow! platformView) -> void override Microsoft.Maui.Platform.ContentView.SetNeedsLayout() -> void override Microsoft.Maui.Platform.LayoutView.HitTest(CoreGraphics.CGPoint point, UIKit.UIEvent? uievent) -> UIKit.UIView! diff --git a/src/Core/tests/DeviceTests.Shared/HandlerTests/HandlerTestBaseOfT.iOS.cs b/src/Core/tests/DeviceTests.Shared/HandlerTests/HandlerTestBaseOfT.iOS.cs index fde189498d18..073cdaa0b27e 100644 --- a/src/Core/tests/DeviceTests.Shared/HandlerTests/HandlerTestBaseOfT.iOS.cs +++ b/src/Core/tests/DeviceTests.Shared/HandlerTests/HandlerTestBaseOfT.iOS.cs @@ -145,7 +145,7 @@ protected Task GetLayerTransformAsync(TStub view) } protected CATransform3D GetLayerTransform(IViewHandler viewHandler) => - ((UIView)viewHandler.PlatformView).Layer.Transform; + ((UIView)viewHandler.ToPlatform()).Layer.Transform; protected string GetAutomationId(IViewHandler viewHandler) => ((UIView)viewHandler.PlatformView).AccessibilityIdentifier; @@ -190,7 +190,7 @@ protected Maui.Graphics.Rect GetBoundingBox(IViewHandler viewHandler) => viewHandler.VirtualView.ToPlatform().GetBoundingBox(); protected System.Numerics.Matrix4x4 GetViewTransform(IViewHandler viewHandler) => - ((UIView)viewHandler.PlatformView).GetViewTransform(); + ((UIView)viewHandler.ToPlatform()).GetViewTransform(); protected string GetSemanticDescription(IViewHandler viewHandler) => GetAccessiblePlatformView(viewHandler).AccessibilityLabel; @@ -203,11 +203,11 @@ protected SemanticHeadingLevel GetSemanticHeading(IViewHandler viewHandler) => ? SemanticHeadingLevel.Level1 : SemanticHeadingLevel.None; protected nfloat GetOpacity(IViewHandler viewHandler) => - ((UIView)viewHandler.PlatformView).Alpha; + ((UIView)viewHandler.ToPlatform()).Alpha; protected Visibility GetVisibility(IViewHandler viewHandler) { - var platformView = (UIView)viewHandler.PlatformView; + var platformView = (UIView)viewHandler.ToPlatform(); foreach (var constraint in platformView.Constraints) { diff --git a/src/Core/tests/DeviceTests/Handlers/Switch/SwitchHandlerTests.iOS.cs b/src/Core/tests/DeviceTests/Handlers/Switch/SwitchHandlerTests.iOS.cs index f66dbc907419..3a3cfe7ef113 100644 --- a/src/Core/tests/DeviceTests/Handlers/Switch/SwitchHandlerTests.iOS.cs +++ b/src/Core/tests/DeviceTests/Handlers/Switch/SwitchHandlerTests.iOS.cs @@ -1,5 +1,6 @@ using System; using System.Threading.Tasks; +using Microsoft.Maui.DeviceTests.Stubs; using Microsoft.Maui.Graphics; using Microsoft.Maui.Handlers; using ObjCRuntime; @@ -42,5 +43,24 @@ async Task ValidateThumbColor(ISwitch switchStub, Color color, Action action = n Assert.Equal(expected, color); } + + /// + /// If a UISwitch grows beyond 101 pixels it's no longer + /// clickable via Voice Over + /// + /// + [Fact(DisplayName = "Ensure UISwitch Stays Below 101 Width")] + public async Task EnsureUISwitchStaysBelow101Width() + { + var switchStub = new SwitchStub() + { + Width = 400, + Height = 400 + }; + + var width = await GetValueAsync(switchStub, handler => GetNativeSwitch(handler).Bounds.Width); + + Assert.True(width < 100, $"UISwitch width is too much {width}"); + } } } \ No newline at end of file diff --git a/src/Essentials/src/DeviceInfo/DeviceInfo.uwp.cs b/src/Essentials/src/DeviceInfo/DeviceInfo.uwp.cs index 317223b6052b..3c2713494297 100644 --- a/src/Essentials/src/DeviceInfo/DeviceInfo.uwp.cs +++ b/src/Essentials/src/DeviceInfo/DeviceInfo.uwp.cs @@ -120,7 +120,7 @@ public DeviceType DeviceType static bool GetIsInTabletMode() { var supportsTablet = GetSystemMetrics(SM_TABLETPC) != 0; - var inTabletMode = GetSystemMetrics(SM_CONVERTIBLESLATEMODE) != 0; + var inTabletMode = GetSystemMetrics(SM_CONVERTIBLESLATEMODE) == 0; return inTabletMode && supportsTablet; } } diff --git a/src/Essentials/src/Screenshot/Screenshot.shared.cs b/src/Essentials/src/Screenshot/Screenshot.shared.cs index 142198380b20..6ee85f558177 100644 --- a/src/Essentials/src/Screenshot/Screenshot.shared.cs +++ b/src/Essentials/src/Screenshot/Screenshot.shared.cs @@ -45,7 +45,6 @@ public interface IScreenshotResult Task OpenReadAsync(ScreenshotFormat format = ScreenshotFormat.Png, int quality = 100); #pragma warning restore CS1573 // Parameter has no matching param tag in the XML comment (but other parameters do) - /// Task CopyToAsync(Stream destination, ScreenshotFormat format = ScreenshotFormat.Png, int quality = 100); }