Skip to content

4.9.17

Compare
Choose a tag to compare
@jeromelaban jeromelaban released this 05 Jun 19:19
· 161 commits to release/stable/4.9 since this release
3dafa2f

Uno Platform 4.9.17 brings two much requested features, as well as well as over 100 other improvements.

First, .NET developers can now reuse MediaPlayerElement across all supported platforms – iOS, Android, Web, Mac and Linux, in addition to, of course, Windows itself.

Second, we’ve added support for WebView2 for iOS, Android and Mac Catalyst.

Head to our blog post for more details about this release.

Community Shout Out

As always, thanks to our community contributors!


Features

  • Resizing video for transport controls 5b4436f
  • wasm: Support ms-appdata for Image 4b48a50
  • Add extensibility support for Windows.Media.Playback.MediaPlayer 50cff71
  • Add missing MUX and Microsoft.Web generated APIs 34e34a4
  • Add support for Window.Title in Uno.WinUI 36a4a3b
  • Delaying paint until Activation 3819b16
  • Display Android Splash Screen until Window.Activate 4cd5c8a
  • Improve IconElement, include shared Grid c10c689
  • Initialize WindowManager asynchronously 09be506
  • Move OS theming logic to SystemThemeHelper b8e36a7
  • Support for FontIcon.MirroredWhenRightToLeft 7632d67
  • Support indexers in x:Bind 2612342
  • Wasm: Implement UIElement.ProtectedCursor 99d3078
  • initial implementation with basic playback capabilities 5786d73
  • Support CommunityToolkit.Mvvm in two way x:Bind 8ffc159
  • Support for UIElement.ActualOffset 76d72ab
  • svg: [Wasm] Add support for ms-appdata 8dd1e30
  • Add support for ExecuteScriptAsync on iOS/macOS 6da41f4
  • Apply themed background color to root visual fecbd42
  • Display WASM Splash Screen until Window.Activate 28628b0
  • Enabling net6 support for msal on ios/android 9780f82
  • ExecuteScriptAsync and InvokeScriptAsync on Android 8a9f504
  • Include full namespace for FrameworkPropertyMetadata in generated code 0df4900
  • Include MUX and Microsoft.Web namespaces in Uno.UI SyncGenerator c6cf258
  • Key CoreWebView2 event args, events 9b2d107
  • Move linked/shared messaging files into a new package feb2bb7
  • Support for DefaultTextForegroundThemeBrush 95324b5
  • Support for IconSourceElement 7188dd7
  • Support for WebMessageReceived on Android 8072ecc
  • Support for WebMessageReceived on iOS/macOS cb09425
  • Support more ComboBox visual states a89ab15
  • Support persistent bootstrapper loaders on WASM 39d44ee
  • CurrencyFormatter: Implement FormatDouble and ParseDouble d5616ad
  • nativehost: Add support the native view hosting 756f1ad
  • pointers: Fix pointer state not updated properly 33a38ea
  • Run: [Skia] Add support to Unicode Symbol and emoji 46ed691
  • update Cross Runtime Library template to WinUI / net7 5e3599f
  • Update to latest version of Uno.Fonts.Fluent 77df8a0
  • WebView: Support for IsScrollEnabled 3fbd8fb

Performance Improvements

  • Add Application bindings 9a3c97b
  • Add Clipboard bindings f201f48
  • Add CreateInstance binding 75f0bbc
  • Add DestroyInstance binding 6607df4
  • Add DisableFrameReporting binding 65ffab1
  • Add DispatcherCallback export b42f301
  • Add DisplayInformation bindings b7d0279
  • Add EnableFrameReporting binding 0f04f79
  • Add fast path when TextBlock has a single Run 036ebd3
  • Add FileOpenPicker bindings 2482244
  • Add FileSavePicker bindings 7dbddbc
  • Add FolderPicker bindings 1a2e00f
  • Add ForceFontUsage binding 2f3a3e8
  • Add GetAppMemoryUsage binding 0a109f5
  • Add GetBasicPropertiesAsync binding 131d4f8
  • Add GetBootTime binding 8309a5c
  • Add JSObject.Dispatch() export 753f368
  • Add LoadFont binding 57f4ce7
  • Add NativeReadStreamAdapter bindings 72bd34d
  • Add NativeWriteStreamAdapter bindings 1f6a53b
  • Add OnNativePointerEvent export bbdcc2b
  • Add RegisterNoOp binding f735d89
  • Add SetAnimationFramesInterval binding 5f06391
  • Add SetStartFrameDelay binding 8a39643
  • Add StorageFolder bindings 44e0b99
  • Add SystemFocusVisual bindings fbbccaf
  • Add WindowManager initialization exports 6e81972
  • Avoid native call to get parent while bubbling events 50cc2a3
  • Avoid rooting compilations in XamlFileGenerator 1773201
  • Avoid using Regex in AndroidResourceNameEncoder b15c12f
  • Fix few more occurrences of ToDisplayString f517a6a
  • GetWinUIThemeResourceUrl shouldn't format a string 8471381
  • Move some XAML generator caches to compilation-level 610ce31
  • Reduce dictionary lookups of repeated FindType call on the same XamlType 0b0d1af
  • Reduce string allocations in XamlFileParser fc64e72
  • Use StringBuilderBasedSourceText in DependencyObjectAvailabilityGenerator 31701d7
  • Use memoized FindType instead of SourceFindType 743c1f8
  • Animations: Marshal pointers instead of strings d51f099
  • WindowManager: Add CssSupports binding bf0276d
  • WindowManager: Add FindLaunchArguments binding 5152ab2
  • WindowManager: Add FocusView binding cd8db30
  • WindowManager: Add GetAttribute binding 9a46fda
  • WindowManager: Add GetProperty binding ca1be0a
  • WindowManager: Add RawPixelsToBase64EncodeImage binding 5991c93
  • WindowManager: Add ReleasePointerCapture binding aa423c3
  • WindowManager: Add SelectInputRange binding 3006ede
  • WindowManager: Add SetImageAsMonochrome binding aec6bcc
  • WindowManager: Add SetPointerCapture binding 6fc79f1
  • WindowManager: Add Window bindings 77e89ea
  • Address TODO regarding O(n) search 90c1dc5
  • Cache PreorderTree to avoid expensive enumeration d1610cd
  • Cache SKFont to avoid unnecessary allocations 3200437
  • Don't use LINQ in measure path b7ca706
  • Implement an alternative to ToDisplayString d58ecc2

Bug Fixes

  • [Android] fix android transformtovisual 02d2582
  • avoid calls to CGColorCreateSRGB before iOS13 cb4a983
  • Corrected sizing of videoView 1eee18d
  • dispatch setting of visibleboundspadding insets 3420cb5
  • Do not throw for already disposed callbacks ade95d8
  • FileStorage.CopyAsync should open target stream for write bf9db5a
  • Fix CalendarView selecting next day due to not respecting current time zone 014673d
  • Get video playing again 6b18dac
  • style + case diff between iOS and Mac API 53467fc
  • Transparency pixels 4134047
  • Update Uno.Fonts.Fluent to get latest glyph fixes 6a8960f
  • animation: anomalies when quickly transitioning between multiple VisualStates of same VSGroup 101606e
  • animation: not defaulting starting value from animated value 54a6d5d
  • AutoSuggestBox: fix Suggestion Item not being selected 498e536
  • CalendarView: CalendarView SelectedDates not working 1bab1ee
  • CalendarView: Fix CalendarView positioning of day's TextBlocks a4ddc83
  • CalendarView: fix the date selecting error by difference of timezone fffad38
  • ci: Ensure Uno.Foundation.Runtime.WebAssembly NET7 is published c336724
  • ComboBox: flyout placement in ios SheetPage af92831
  • droid: bringintoview for not visible items 5e0c4fe
  • droid: ScrollView Offset fc86ee6
  • ExportManager: Ensure Uno NET7 is used 1c22a28
  • Geolocator: Stop using location when unsubscribing from events. 22ee956
  • image: Don't update the image asynchronously to avoid showing intermediate visuals 27001a8
  • iOS: GetTransform allow controllers to be null 76e1bed
  • ItemsControl: desync from modifying ItemsSource of non-INCC/IObservableVector source 4cee87a
  • itemsRepeater: Fix regerssion that would prevent nested IR to render items after the first page if scrolling slowly 342b8a6
  • ListView: unnecessary SelectTemplate call on collection reset fab5c1c
  • lottie: Improved the loadeability of Lottie library on Wasm when running in Embedded context. 685ba37
  • pointers: [Skia] fix captured release to early when crossing bounds of the capturing element + invalid dispatch to a transformed elements e1a1929
  • pointers: Make sure to cleanup pointers state when an element is being recycled 027323b
  • progressing: prevent breaking change by internal interface b39a2d3
  • reg: Fix offset computation of native only elements 5630f84
  • reg: Fix pointer capture broken on Firefox ccb7a46
  • skia: UIElement.KeyDown firing twice per input ba79e98
  • ToolTip: fix an issue where the tooltip remains even when the button is pressed 35c9497
  • ToolTip: fix an issue where the tooltip remains even when the button is pressed cdf98ee
  • ToolTip: fix the namespace referencing error of virtual key. aa9a8c0
  • Add app.manifest to SamplesApps 27e318f
  • Add app.manifest to UWP-based templates 3db340c
  • Add missing app.manifest to old template cf8248b
  • Adding package metadata d40a8ba
  • Address Review 8148005
  • Adjust Border.Child replacement b26f1e2
  • Adjust Expander API to match WinUI aec2a15
  • Adjust for missing propsfile 5d0256e
  • Adjust full path property in netcore tests 22873d2
  • Adjust nullability of ApiExtensibility 715e676
  • Adjust transform on PopupPanel 886bc6d
  • Adjust vscode support d76fb34
  • Allow multiple reads of StorageFile 750e93a
  • always raise CoreWindow.KeyUp/Down 65fed34
  • ambiguity in KeyboardEvents sample f672f76
  • AppBar and CommandBar Uno Islands support 7ca5247
  • AppBar and Flyout base fixes for Uno Islands 5b0ca83
  • Avoid delay when hovering over SelectorItem with mouse 5f6c6b9
  • Avoid raising events when recycling TextBox, ToggleSwitch, and ToggleButton 0e1d70e
  • Call the correct FocusManager methods with options 6998e42
  • Change UseLegacyPrimaryLanguageOverride default value to true 7f992d3
  • Correctly run FullWindow tests in context of Uno Island 794ad25
  • Delay Activated and VisibilityChanged events until first manual activation 8afe9b1
  • Detect availability of localStorage before using it 4f9c17b
  • Don't propagate DataContext in PlacementTarget property 9727703
  • Enable When_VerifyEnabledXYKeyboardNavigation in Uno Islands 109a572
  • Ensure changes to ImmutableList are not processed in-place 3f6c5a2
  • Ensure imagebrush's source is updated when set a72afde
  • Ensure scroll is enabled by default on WebView 6673deb
  • Ensure theme is correctly applied to elements constructed before OnLaunched 70e7b19
  • Ensure theme is initialized before UI 69aaf2d
  • event ordering of KeyUp/KeyDown on Skia f79d1d6
  • Expander should be closed by default db48b4d
  • fill array 6a56be0
  • Fix arrange when setting BorderThickness with null brush 9779ed7
  • Fix ListView missing top elements when flinging #11809 b5d90b0, closes #11809
  • GetParentInternal should use VisualTreeHelper to get non-public parents too 63da018
  • Ignore pointer injection tests for Uno Islands bbd0da8
  • Make sure we add AndroidResouces before _ComputeAndroidResourcePaths is run f4dfbbe
  • No longer ignore ScrollOffset on ScrollViewer in TransformToVisual since they are at SCP level now 1aa0c5d
  • Popup and Flyout placement within Islands 7dc99f2
  • Prevent FontIcons from moving randomly 82d6e3d
  • Properly close flyouts in all XamlRoots 34776b4
  • Properly handle FocusManager focus directions 7a1e9fb
  • Properly layout AutoSuggestBox popup in Islands 13671ab
  • Remove bootstrapper splash override, apply same styling 1c554a2
  • Remove Fluent font .ttf from UWP NET6 template 29d93a9
  • Remove Fluent font .ttf from UWP template 756931c
  • Remove Uno Fluent font .ttf from old template d4721cf
  • Undo breaking change around WebErrorStatus ac0d2e9
  • Workaround jumping ScrollViewers on Skia 11408b3
  • android_scaling: Fixed the calculation of the pixel density on Android when running on device api >= 30 a89ec1d
  • animation: setting Local value should clear Animation value in filling state 11b753a
  • ContentPresenter: Avoid DataContext temporary reset 6c2d89a
  • hr: Adjust Page reload for custom frame presenter 89738d1
  • ios: LVI is sometimes clipped 07e14bc
  • ios_localization: The Windows.Globalization.ApplicationLanguages were not properly initialized on iOS with languages from the OS. e2cc633
  • itemsRepeater: IR might not re-subscribe to the EVPChanged event on load a632ee5
  • ListViewBase: Adjust indices repairing considering recursive list manipulation 33aeabf
  • reg: Android, do not clear pointer state if view is going to be re-used in same layouting pass f5d1a2e
  • TextBlock: [WASM] TextBlock.Inlines are not formatted correctly: spaces/blanks are removed #11418 b0acf88, closes #11418
  • TextBlock: [WASM] TextBlock.Inlines are not formatted correctly: spaces/blanks are removed #11418 886cbc5, closes #11418
  • Wasm: error CS0759: No defining declaration found for implementing declaration of partial method 'HtmlMediaPlayer.NativeMethods.setAttribute(nint, string, string)' 7980950
  • add permission and change exception 794b17d
  • add redirects 227284f
  • adding WinUI dependencies for windows target e8a445e
  • Adjust logic for Android TextBoxView selectability 4aad3e8
  • Ensure Commands are executed when RadioButton is toggled through AutomationPeer d5ac564
  • Fix a case where fuzzy matching was missing 53c77cd
  • Fix BitmapImage events not raised 5834545
  • Fix calendar header display first selected bale month instead of current 30f54fb
  • Fix CalendarView going into an infinite loop b593c43
  • Fix CameraCaptureUI on Android 11 and later c58969f
  • Fix ImageBrush not detecting changes of its ImageSource ae86a9d
  • Fix NRE in x:Bind 9e64ea8
  • Fix RandomAccessStreamReference.CreateFromUri crashing for ms-appdata Uri 83e2b15
  • Fix StorageFile.GetFileFromApplicationUriAsync crash when given appdata uri 1b193da
  • ListViewItem: multi-select check missing 6252bfa
  • reg: Fix null anotation 12175af
  • reg: Restore pointers on Android 1cad02f
  • Fix the Space/Blank missing error 0088cd7
  • Initialize PopupRoot on macOS 9403bf1
  • make the SpeechRecognizer ask before recognition a3c1c76
  • Properly propagate theme changes in Islands 272cdff
  • Properly resolve buildSplashScreen for new bootstrapper ed4bd1b
  • Properly set Application initialization type for Islands bd216e4
  • Raise OnWindowCreated after Application.Current is set df74a0d
  • remove usage of HashCode.Combine a64907e
  • Run ProgressRing test on UI thread 330d17f
  • Run VerifyFontFamilyForChevron on UI thread 3197ab4
  • Take stretch into account for RefreshContainer layout 8af07d0
  • Updating all refs to Microsoft.Identity.Client fc0b313
  • Use explicit XamlRoot for GetFocusedElement where possible 4a4d848
  • Use instance FocusManager methods in CommandBar d57e3e4
  • Use proper RootVisual for pointer up 8ee0d67
  • Use RotateTransform instead of AnimatedIcon in Expander 534b3b1
  • VisualCollection changes should influence IsRenderOrderDirty aa8b210
  • Workaround #11896 by making Expander chevron animation duration zero d49e7ae, closes #11896
  • JSObject: Marshal pointers instead of strings 56c0790
  • ProgressRing: IsIndeterminate property and (In)DeterminateSource behave now as expected. 5540eae
  • XAML Hot reload mishandling empty paths 8ccc3da
  • hr: Ensure that project reference paths are properly discovered 9d403a6
  • Make it possible to toggle IsReadOnly repeatedly 6544ea7
  • Remove WUX implemented MUX types from sync generator ee4d279
  • droid: BringIntoView blocked behind keyboard 1ac3abd
  • gtk: Reduce visual artifacts for clipped paths 539c0fb
  • ios: ListView not resizing as items change 4effe62
  • RepeatBehavior: parsing of iterationx and timespan syntaxes f637d08
  • Add missing CSS class for GTK TextBoxView a1b3e96
  • Align PrimaryLanguageOverride behavior with UWP a839b48
  • App deactivation should close only light dismiss popups 0fca14c
  • Enable ShouldWriteErrorOnInvalidXaml bd8d71a
  • treat uwp templates as solution templates 6107be2
  • update dotnet template names 60b0362
  • animation: droid dependent animation breaks after 1loop 1a5e722
  • AutoSuggestBox: Ensure correct text change Reason 04e452b
  • iOS: Monochromatic Image 3bf7bf8
  • itemsRepeater: IR not visible on intiial load might not materialize enough items 19714d4
  • ListView: Fix support of item re-ordering support of ICollectionView c92e1c5
  • mediaplayer: restore control and transport styles 22ed301
  • ProgressRing: Fix ProgressRing being vertically stretched 43eabdf
  • reg: Revert "remove GuardBand on GTK HW renderers to avoid visual glitches around clipping" e610716
  • templates: Don't include SupportedOSPlatformVersion for non-selected platforms 47a57fd
  • templates: Specify AndroidManifest correctly so that design-time builds don't fail 0346102
  • Avoid setting intial PasswordRevealState for plain TextBox a49023f
  • Don't use COM allocator aa5b7e0
  • Enable proper root visual initialization in unit tests 361b73b
  • Fix geometry code generation on Wasm bd1cc2d
  • Remove unintentional UnoQuickStart from templates 27f0d69
  • Reset stream position to zero before CloneStream returns 366d135
  • Retrieve ResourceLoader via constructor 3be270b
  • assets: Adjust support for transitive assets marked with a Link metadata b9fbda8
  • lottie: Ensure that opaque state is adjusted on any Loaded event f862e18
  • sourcegen: Restore proper component lookup string cf97865
  • xamlreader: Ensure adding properties on an explicit property reports an error c038beb