Skip to content

3.10.7

Compare
Choose a tag to compare
@jeromelaban jeromelaban released this 14 Sep 13:09
· 48 commits to release/stable/3.10 since this release

Uno Platform 3.10: Day-0 support for .NET 6 RC1, WinUI InfoBadge, Windows 11 Fluent Styles

We continue to evolve Uno Platform in lockstep with the latest Microsoft developer platforms and tooling. Our 3.10 release supports .NET 6 RC1, latest developments in WinUI.

We are following developments in .NET 6 and Visual Studio 2022 until their general availability and look forward to bringing to you all the productivity, performance and stability benefits this latest wave of innovation from Microsoft is enabling for all of us.
In addition, we closed over 150 new features and issues requested by our community and clients, as well as added 30+ samples to our documentation.

As always, thanks to our community contributors:

You can view the full blog post for this release here.

Features

  • Upgrade to .NET 6 RC1 d110581
  • Vector3 XAML conversion 2aa0be9
  • background_sizing: Added support of BackgroundSizing on Wasm 8afd0c8
  • background_sizing: Fixed compilation for Skia (background sizing not implemented yet) 219a42e
  • BadgeNotification: Support for Tizen e5dc94f
  • BadgeNotification: Support for WASM b7237fd
  • New default Android, iOS and Mac Catalyst Uno Platform app icons 587ec89
  • background_sizing: Added support for BackgroundSizing on Android 7a9b306
  • background_sizing: Added support for the BackgroundSizing DependencyProperty + a sample for it. c3f8315
  • fillrule: Correctly implement FillRule for iOS & macOS 1c90c0e
  • fillrule: Correctly implement Path.FillRule on Android d0b9213
  • fillrule: Fix FullRule on Wasm when GeometryGroup is used ed89a82
  • geometrygroup: Add preliminary support for GeometryGroup on Skia. FillRule not fully supported yet. 64226f5
  • measureview: Added the ability to .MeasureView() to measure eiter the content of the whole control for and HTML elements. f1607a9
  • wasm_measureview: Added the ability to call .MeasureHtmlView() from application code. Useful to implement .MeasureOverride() in Wasm applications. 27e31b8
  • DeviceBluetooth - common 53bd836
  • background_sizing: Fixed compilation for iOS & MacOS (background sizing not implemented yet) dbbcecc
  • datepicker: Added a new [UnoOnly] UseNativeMinMaxDates property on DatePicker & NativeDatePickerFlyout to allow the picker to be restricted to some date instead of just the year. Properties MinYear and MaxYear are still used for that since they are already of type DateTimeOffset. 33ffc12
  • dragdrop: Add ability to drop external content into wasm app 36c9eaa
  • dragdrop: Fix support of external DragAndDrop to app on wasm b5942de
  • runtime: Add ability to provide a CT for InvokeAsync c38c00c
  • wasm: Add ability to manipulate a File using NativeStorageItem 0ffb4e0
  • ActualTheme and ActualThemeChanged 5485f52
  • Add optional XAML and Bindings Trimming 5d956f2
  • Add ResourceDictionary retemplate 1b5acbd
  • Add ResourceDictionaryWithCodeBehind template e2f48bc
  • Add support for DataContext inheritance for non-UIElement bd1c297
  • Add Thumb control default style 97b0cb7
  • Added CompositionColorGradientStop implementation 14210e6
  • Added CompositionColorGradientStopCollection implementation 61628e1
  • Added CompositionEllipseGeometry implementation 10f2466
  • Added CompositionGradientBrush implementation 38db8d6
  • Added CompositionLinearGradientBrush implementation ab93de0
  • Added CompositionLineGeometry implementation fe75691
  • Added CompositionRadialGradientBrush implementation 031eae3
  • Added CompositionRectangleGeometry implementation 8309bc7
  • Added CompositionRoundedRectangleGeometry implementation 3c5bc14
  • Added property change propagation notification for CompositionObjects 543b834
  • BackdropMaterial fallback support dfee434
  • BackgroundTaskDeferral for Android 2c4d7ee
  • Contact and ContactAddress, warning when setting to longer than UWP 1d8a3c2
  • fields for Android ToastNotification 639ea22
  • Hide delete button when TextBox isn't large enough 003462f
  • Implement SelectionStart, SelectionLength on Skia e10659e
  • Implement sizing methods for ApplicationView 945a8c0
  • Implement TextBox.Select, TextBox.SelectAll on all platforms b0f7646
  • Initial support for CoreWindow.GetKeyState dc4517d
  • Support for RenderTransform on Android LinearGradientBrush 5b54e1f
  • Support for SettingsIdentifier, SuggestedStartLocation and SuggestedFileName on WASM 0048e4b
  • Support PasswordBox on Skia 3f03c60
  • listview: Implement drag-and-drop scrolling and visual states ab6a898
  • pointers: Add inertia support in manipulation events 40f8d54
  • shapes: Finished the implementation of GeometryGroup in Wasm/SVG d322267
  • test: Add runtime tests automatic retry support 8919f17
  • Windows.Devices.Radios common enums 91f8385
  • pointers: Fully implement the inertia processor 288bdc8
  • shapes: Implemented all geometries on Wasm 0d4e7cf
  • wasm: Added ability to measure shapes on Wasm even when the control is not loaded. fe2c502
  • ScheduledToastNotification 6427e28
  • SystemTrigger Android implementation 90f591d

Performance Improvements

  • [Android] Improve DisplayInformation performance 111affb
  • Additional changes to mitigate PG-AOT dotnet/runtime issue #56309 218fd00, closes #56309 #7005
  • Additional changes to mitigate PG-AOT dotnet/runtime issue #56309 ba58785, closes #56309 #7005
  • Apply various workarounds for dotnet/runtime issue #56309 5cbbec2, closes #56309
  • Improve DependencyProperty propagation ea6381e
  • Improve nullability checking in DependencyProperty 5f50f1f
  • Move Brush inheriting types to be lazy in ResourceDicionary 9954c4d
  • Remove DateTimeOffset from TimeLine 96585ff
  • Use invariant culture in XamlFilePathHelper fbf79fb
  • Use lazy split regex creation in FastConvert 1e49c0f
  • use switch(string) for bindablemetadata lookups f74fe23
  • android: Adjust clipping computation performance 6b3f2eb
  • android: Cache Stroke/Fill system style to reduce interop c410a4a
  • android: Don't sort Canvas children below 2 986d922
  • android: Move SimpleOrientationSensor off the UI thread 8f5666e
  • android: Simplify Activity instances tracking fbe91b5
  • android: Use HashTableEx in FontHelper 0fc8e52

Bug Fixes

  • [Skia] Fix layout when RevealBrush is used 9f5e1a8
  • Add support for VS 2022 in sync generator 4947bc1
  • Add XAML source generator cancellation support 0e4964d
  • Add XAML source generator cancellation support dd4b19e
  • Apply coercion before value is set 7be2c37
  • Apply icon color correctly inside native AppBarButton 4055a07
  • Apply pointer visual states of pivot items 341205f
  • ComboBox WinUI 2.6 border workaround 1991964
  • Compare NaN correctly f509baf
  • Disable light-dismissing MessageDialog 3c27bd3
  • Exception was not reprotyed properly in async calls on WASM f93e40d
  • Fallback to specific regional culture if neutral culture isn't found 1b35aed
  • Fix faulty indentation d6ec852
  • fixes TextBox cursor color for Android 29+ 375db65, closes #6240
  • Flyout should return focus to previously focused 4d8af83
  • Generate native ctor only when a ctor with required signature exists in base types 3691e08
  • Handle scaling less than 100% on Wasm 7937de6
  • ImageBrush RenderTransform does not throw a633fa9
  • LinearGradient angle should be reflected in EndPoint 1ffe017
  • Popup should receive focus if its child is focusable e6c03bc
  • ToggleButton WinUI 2.6 border workaround d08d589
  • Unchecked CheckBox should not have visible glyph a9d201e
  • Border: Adjust UI Test snapshots differences after changes for pull request 6898 (Related to Uno.Themes - #616) 56cba36, closes #616
  • commandbar: [iOS] Don't fetch the internal TitleView parent on invalidate measure 0a9a729
  • CornerRadius: [Android]Remove twice drawn border, adjust Background that was underneath the border and properly calculate inner corner radius for common cases 4d0976a
  • dragdrop: Preserve DragDropExtension JS entrypoint a5ba887
  • Propagate focus properties from Flyout to Popup host 7cac6bc
  • Remove net5.0 target option for skia/wasm dc13854
  • getbbox: Fixed GetBBox bug 93a663c
  • xamlreader: Load ThemeResources properly 06609d6
  • Propagate focus properties from FlyoutPresenter caf0ffb
  • Propagate focus property changes from PopupBase to Child 9f8b3af
  • Set method of attached property must have 2 parameters 9b1c2c1
  • Use SymbolThemeFontFamily instead of hard-coded Segoe MDL2 Assets 9dae693
  • geometrygroup: Fixed a situation where the change handler could not be set on the GeometryCollection 794d4e6
  • reg: Fix SelectedIndex update when ItemsSource is ObservableCollection 2747773
  • Add missing implementation for text alignment on macOS 680ce6c
  • Correctly check if the TextBox is PasswordBox befo 4e02fba
  • Handle justified text for TextBlock on Android 8104c69
  • Hide MS Edge reveal password to avoid duplicate reveal buttons a5e9160
  • Use SkiaSharp.Views.WPF for .NET Core target c03af67
  • animation: Fix DAUKF not cancelling its frames when stopped 1af267b
  • animation: Fix transition animation not cancelled 144348c
  • animations: Ensure VisualState and VisualTransition are materialized in the right resource context 77b769d
  • ColorPicker: event subscriptions when reloaded e30e8c3
  • ColorSpectrum: not rendering on skia/wasm f3216d8
  • dragdrop: [iOS] [Android] Support drag over events when native view in hierarchy 1fe777a
  • layoutinformation: [Android] [iOS] Return correct GetAvailableSize d073d39
  • listview: [Android] Fix glitches during drag-and-drop df5a4ed
  • listview: [Android] Improve performance when updating list items 6187297
  • pointers: [Android] Fix ListView scrolling with manipulation aa0d67f
  • pointers: [iOS] Fix ListView scrolling with manipulation 27cb649
  • pointers: [iOS] Fix pointers never goes to parents element of a ScrollViewer 3ee8c33
  • pointers: [iOS] Fix possible "additonal move on relase" being raise more than once 46cbabb
  • pointers: [skia] Fix captures atomatically released when leaving control 9cc3661
  • pointers: Fix manipulation not being aborted on pointer released if in Starting state 2204d14
  • pointers: Make sure to disable pointers interception by scrollable contents as soon as a conflicting manipulation or a drag starts 05b553c
  • reg: Ensure that Setters are also applied in the right context 84923a7
  • Disable implicit .NET 6 Pre 7 global namespaces imports f902d6a
  • Fix .NET Native Logging missing metadata caf9771
  • wasm: AssignAndObserveBrush impl for GradientBrush 352ce18
  • Don't include type name in doc comment due to roslyn bug 88a180c
  • Fix checking symbol type when it's nullable ref type 2459f60
  • Fix linear gradient border not working on Wasm 1d8a4bd
  • Fix visual state for disabled selector items 35c1ef9
  • Handle SelectedIndex properly when removing/adding before the selected index 057f0ea
  • Upgrade ProjectCapability for VS 2022 b5a84be
  • Use StringUtil.FormatString instead of string.Format for WinUI C++ resources a9aad90
  • iOS: Update src/Uno.UI/Controls/Window.iOS.cs e676922
  • reg: [iOS] Fix pointer event was raised on SCP parent before SCP children dcb9534
  • Account for keyword-like identifiers in native ctor generator b6f48e0
  • Move CookieManager and related classes to runtime assembly 8e6770f
  • Null-check focus children in tab order c258537
  • appbarbutton: [iOS] Fix AppBarButton icon sometimes disappearing 9335a0a
  • dependencyproperty: Only permit one binding at a time 1b18fee
  • iOS: [Window] Null pointer exception 4da2c20
  • itemscontrol: [iOS] Fix DisplayMemberPath support 0a2db57
  • itemscontrol: Bind DisplayMemberPath target 4102f1b
  • pointers: Make sure to also update position with inertia ea762b2
  • pointers: Make sure to not continue an invalid manipulation c9b6df5
  • tests: Ensure that UI tests are retried under more conditions 35e40d4
  • Add 'base.' to make sure we not access generated property with same base name abbcce6
  • Adjust missing accessibiity for gtk app 2187e70
  • Apply suggestions from code review 40d9ab7
  • Cleanup few warnings a47f480
  • ComboBox does not handles the PointerPressed event d32199f
  • Don't generate invalid code when x:Load and StaticResource markup is used 70f756b
  • Don't mark buildTransitive files in Uno.UI.MSAL as content 54a2d50
  • Ensure that all uno controls defined dependency properties are using FrameworkPropertyMetadata b70d640
  • Fix GetHashCode implementation of NamedTypeSymbolStringComparer 27cd5f8
  • Fix split regex to fix failing test fb83f5f
  • Followup fix to .NET 6 template ade19e5
  • Hardware back button on Android is not working 28d6cf8
  • Ignore case and other allowed suffixes 3f45f12
  • Ignore MarkupExtensionReturnType to match UWP behavior 2029360
  • Parse XAML 'Run Inlines' correctly in Span ed16f3e
  • Pass inner exception per feedback 592dd0f
  • Sync solution template updates 4e7f224
  • WASM TextBox getting focus when part of recycled template 0d00391
  • flyout: placement with position provided f8fb109
  • macOS: contentControl intercepts pointer events ce41d41
  • reg: Fix missing accessibilty for GTK samplesapp head ff13258
  • reg: Fix tap gesture no longer recognized since the pointer properties has changed in simulated move eff29c3
  • Allow separating by spaces and/or commas ffa761d
  • Allow trailing 'px' for grid length cade3da
  • Apply scaling for browser tests 6199682
  • ComboBox should handle PointerReleased 0aceccf
  • Correctly handle access modifiers in XamlfileGenerator 245df0a
  • Ensure content in Canvas in Canvas is visible 3858136
  • Ensure focus is lost when clicking outside app content 68940da
  • Ensure PRI file is included in the nuget package 47bd3cb
  • Fix merge issue which rollbakcs changes of #6163 05fbbfe, closes #6163
  • Fix the build. c294989
  • Fixed Rectangle rendering when using stroke thickness 54433d8
  • Generate valid code for type in default namespace in DataTemplate 83cb5b3
  • LinearGradientBrush can't generate with explicit GradientStopCollection e7153af
  • Properly generate string literals using Roslyn API 2a4a83e
  • Support for non-UIElement ElementName binding in global ResourceDictionary 318f24d
  • elevatedview: shadow not appearing on uwp 94cafcd
  • flyout: Ensure namescope propagation for flyout content 42f7d9e
  • macOS: Window sizing 792ef7b
  • menuflyout: Position MenuFlyout correctly with native AppBarButton cb6802f
  • msal: Move package generation to nuspec for net6 compatibility 939fd95
  • pointers: [iOS] Fix support of "fast gestures" like swipe 8d37557
  • pointers: Fix pointer velocities are invalid when manipulation interia is running 489483e
  • pointers: Fix pt args timestamp's on WPF was in ms instead of ticks 5de1fe7
  • pointers: No longer normalize manip.rotation in [0,360[ si speed and inertia are computed properly. 3a53398
  • Selector: firing order of data-bound dp & event b3f64a6
  • shape: Setting a 's Data property to null after an actual value were causing a NRE (NullReferenceException) 9cf2b29
  • swipecontrol: Fix inertia of SwipeControl by using the manipualtion's inertia e168422
  • swipecontrol: Make sure no Button.Click is trigger when manipulating the SwipeControl 51f3451
  • visibleboundspadding: Adjust for Window.Current being null 9e35fd3
  • xBind: Fix support for FallbackValue 8744c50
  • Reduce focus search logging level da49d4e
  • Report a warning when xaml code behind does not have correct base class specified. eec0d81
  • Silence warning 4773f77
  • ToolTip implementation 5583919
  • Update VS2022 vsix owner fffc677
  • use correct diagnostic rule. Fixes #3412 627a8b5, closes #3412
  • Write UnoNotImplementedAnalyzer using IOperation to avoid false negatives 1e88ffe

BREAKING CHANGES

  • animation: VisualState.Setters are now applied after VisualTransition.Storyboard