5.1.31
It has been nearly 3 months since we launched Uno Platform 5.0. Since then, .NET RTM’d and even shipped a servicing release. Naturally, we embedded all that goodness in our 5.1 release, as well as added number one feature you requested – Our Live Wizard for Rider and VS Code users.
The same time-saving utility is now available via our Live version to JetBrain’s Rider and VS Code users so you can get your projects set up quickly. We also added three new controls, and improved performance.
Visit our blog post to learn more about Uno Platform 5.1!
A few more detailed highlights on this release :
- Font Fallback support on Skia
TimePicker
support- New MsBuild
Uno.Sdk
- Support for
ComboBox.IsTextSearchEnabled
- Support for
StandardUICommand
TextBlock
support forIsTextTrimmed
andIsTextTrimmedChanged
- Performance
- Memory leaks improvements (NavigationView, RatingControl)
- Animations performance improvements
- Memory allocation and Boxing reductions in DependencyObject
- StatusBar performance for Android
- TextBlock rendering performance
- Various alignments in layout engine from WinUI
And of course, many thanks to our contributors:
- Documentation updates by @EvarDion, @davkean
- TreeView.DragCompleted support by @TopProgrammer77
- TextWrapping update on Safari by @TopProgrammer77
- Android Resource generation stability improvements by @dellis1972
- Uno Solution updates by @limeniye
See below for the full changelog:
Features
- Add ability to enable hot-reload in release (for automated testing purposes only) (11deccb)
- Add add PhoneResource.h to WinUI resource extractor (d90d888)
- Add basic support for TextBox.Paste and PasswordBox.Paste (456799e)
- Add font fallback support on Skia (03397f2)
- Add internal support for InputKeyboardSource on Uwp (187a1cb)
- Add LinearArrayPool (87419e7)
- Add net7 backward compatibility for msbuild getProperty (2f025e5)
- Add new WinUI resources (96ee37e)
- Add support for devserver IDE channel (dcecc26)
- Add support for quicky opening searched item in SamplesApp (5b7cf3b)
- Add TimePicker Fluent V2 styles (4dab50e)
- Add tool to generate WinUI localized resources (aba02b0)
- Add UIView.Dispose detection analyzer (4df839e)
- Adding counter tutorial (673b597)
- adding Cross Targeting globbing (3caea39)
- Adding reloadcompleted callback (4168502)
- adding SDK (f7c569c)
- Adding workshops to docs (66cf878)
- Controlling ui updates on hot reload resume (159cce7)
- Implement
GetConnectionProfiles
(06a73c6) - Implement Automation Identifier Properties (085bc2f)
- Implement Automation Identifier Properties (069d2e1)
- Implement Automation Peers enums (2a1d22a)
- Implement Automation Provider (89b5ab5)
- Implement ComboBox.IsTextSearchEnabled (47df509)
- Implement SCP.SizesContentToTemplatedParent (936fb48)
- include winappsdk-workaround for non-Single Project (887a9a0)
- InstanceTracker for FrameworkTemplatePool (0d67bd7)
- LoopingSelectorHelper (f8312e7)
- Port
ImageAutomationPeer
(3c8e536) - Port LayoutRound code from WinUI (95fba8f)
- RepeatButtonAutomationPeer (bb1b1ea)
- StandardUICommand (ba9c078)
- Support CompositionStretch and [Horizontal|Vertical]AlignmentRatio and use that for ImageBrush (b0854ef)
- Support for TextBox.Paste and PasswordBox.Paste on Android (aab94da)
- Support for TextBox.Paste and PasswordBox.Paste on GTK (e58e5bc)
- Support for TextBox.Paste and PasswordBox.Paste on iOS (d174ff9)
- Support for TextBox.Paste and PasswordBox.Paste on WASM (3c3759a)
- Support for TextBox.Paste and PasswordBox.Paste on WPF (a98212b)
- Turn Sample info dialog into a flyout (4f90261)
- UnitTestsControl should handle default parameter values (aab2154)
- Update InfoBadge to winui3/release/1.4.2 (95292c5)
- update menu style (06752bf)
- Use newly added resources (082bfaf)
- WinUI TimePicker (2810779)
- textblock: IsTextTrimmed & IsTextTrimmedChanged (e1523f8)
- textbox: add support for text selection (2324b9e)
- Update DispatcherHelper to winui3/release/1.4.2 (99e91bd)
- Update InfoBar to winui3/release/1.4.2 (a075182)
- Update TreeView to winui3/release/1.4.2 (f668510)
- Update TwoPaneView to winui3/release/1.4.2 (f01ebe1)
- Use StandardUICommand for TextBox context menu (2c2b37f)
- textbox: start skia-based TextBox implementation (bc7d426)
Performance Improvements
- Fix NavigationView memory leak (c1591c1)
- Fix RatingControlPage memory leak (fbc6bea)
- only invalidate InlineCollection layout when properties change (190a824)
- samplesapp: Fix RadioButtonsPage memory leak (7620f0a)
- samplesapp: Fix SamplesApp leaks (b2b0a5a)
- Access Color DP once in InlineCollection.Draw (6162874)
- Animations-focused misc optimizations (b3c3a91)
- Avoid iterators when updating resource bindings (3de964b)
- Eliminate boxing of FrameworkPropertyMetadataOptions (6e03929)
- Eliminate enumerator boxing in ResourceBindingCollection.HasBindings (89d2c08)
- Eliminate SKPositionedRunBuffer allocations completely (77168dc)
- Eliminate unnecessary array allocations for GlyphInfo and GlyphPosition (8024507)
- Extract static arrays (1923b87)
- Re-use Metadata calculated for getting property inheritance info in DP details (380b30b)
- Reduce memory allocations from FindName (4e6f5df)
- Use Array.Clear(arr) instead of Array.Clear(arr, 0, arr.Length) (991aed2)
- Use ArrayPool for very temporarily arrays in InlineCollection.Draw (f900f25)
- memory: Use LinearArrayPool for DependencyPropertyDetails (ab0b3de)
- memory: Use LinearArrayPool for DependencyPropertyDetailsCollection (11daf41)
- memory: Use sparse arrays for DependencyPropertyDetailsCollection (5c7b3c1)
- SamplesApp: Avoid unnecessary expensive GC.Collect (8fa5168)
- StatusBar: Cache height resource id (b516411)
- StatusBar: Use cached density on Android (14ceba9)
- xamlgen: Reduce allocations in RewriteNamespaces (186f954)
- Misc perf improvements (f51f229)
- Optimize
GetCurrentHighestValuePrecedence
to not force create property details (82203be) - Use a single static SKTextBlobBuilder for inlines rendering (69fc349)
- Use cached Metadata when getting DP default value and reduce Flags size (efbe97a)
Bug Fixes
- Avoid breaking changes (e18d733)
- Call
NameScope.RegisterName
only forx:Name
(429a016) - Consider Canvas.Left/Top as independent animation (df000af)
- Disable template pooling on Android (852b286)
- Fix IR not reflecting CollectionChanged.Update raised while being unloaded (2723df5)
- textblock: render tabs realistically (293cd7c)
- textbox: fix selection when Paste doesn't change the text (a1bb138)
- textbox: raise paste on PasteFromClipboard (74b4929)
- [wasm] Don't fail on uninitialized GC handle (6546ec3)
- droid: match Geolocator method with WinUI API (bda71a4)
- Fix measuring MPE (67e21c1)
- RatingControl events re-attachment (991b710)
- droid: Geolocator listener crash (af652ec)
- Adjust cultures to be compatible with .NET's ICU list (61e5886)
- droid: FileOpenPicker.SuggestedStartLocation (e23b12e)
- droid: flipview Native View clipping (3d63911)
- Adjust arrangeSize for non-Stretch alignments (c7a4b93)
- Adjust default values types for EntranceThemeTransition DPs (0cade60)
- Align Hour and Period property in Calendar with WinUI behavior (32da347)
- Align UIView test with actual UIView inheritance (4bfdbda)
- AutoSuggestBox is not styled correctly on hover (f7b332f)
- avoid calling Native getter in NativeCommandBarPresenter (e9c011d)
- avoid creating disconnected native commandbars on load (2f532af)
- Avoid propagating FindName to Content if ContentTemplate is used (09e3a0f)
- Behavior of Period property in Calendar (fe1332b)
- Call Dispose instead of Destroy on
_videoWindow
(72d83d6) - Correcting links (9452fed)
- Do not explicitly reset DatePickerFlyout style unless requested (e846510)
- Do not try to call Focus(Unfocused) (3fdfd1b)
- Ensure LoadCompleted is fired on UI thread (70cd310)
- ensure that not implemented events raise Uno0001 (25b9c71)
- Ensure ToggleMenuFlyoutItem is reported as Toggle (df039bf)
- Ensure WPF doesn't override our own synchronization context when calling pointer events (76864a6)
- Fix ItemsRepeater might not listening on collection changed when re-loaded (49fed2b)
- Fix MPE race conditions (6a0720c)
- Fix NaturalVideoDimensionChanged event subscription (3e640f2)
- Fix NavigationView memory leak (a9182c9)
- Fix type resolution from x xmlns namespace (2732b61)
- Improve legibility of DatePicker and TimePicker selection highlight (9876653)
- links to xref (b295108)
- Looping selector should size panel only when scroll viewer is initialized (dae0709)
- mention starting version (5393b17)
- Only set children parents to null on UIElement cleanup (28edf67)
- pointer coordinates shift on WSL (10026e7)
- Port GetMinMax from WinUI (1d8bbb1)
- Re-add VectorExtensions (3063947)
- Remove missing guidance on WSL (bcd52f2)
- SamplesApp fail when FilteredSamples null (7079c3f)
- scrollviewer grabbing focus on pointer up (9c58ee5)
- Setting hours on Calendar does not work correctly (7ac83d3)
- split a few more kits (6e927b0)
- WinUI ProgressRing not showing (f099d29)
- Workaround the TimePicker and DatePicker popups showing up in incorrect position briefly (e2b64b3)
- Android: add start/stop orientation sensor (36b1680)
- bitmapicon: fix BitmapIcon respecting ForegroundProperty on skia (440a083)
- ComboBox: selection state not being updated (54b084d)
- commandbar: Avoid NSObject_Disposer:Drain with custom AppBar content (d48ddf3)
- droid: flyout having no size in certain case (8a51870)
- FrameworkTemplatePool: Detach native view from parent when recycling (b0c96b3)
- hr: Avoid ENC0011 when modifying a const field during HR (c03697a)
- hr: Ensure that the msbuild version used is properly aligned (2312c2e)
- hr: Prevent double reload on skia/wasm supporting targets (b88feeb)
- hr: restrict XamlReader to mobile targets only (a63fcb3)
- HR: Include path to C# files to ensure partial HR picks up CSM changes (3b87c73)
- iOS: CameraCaptureUI cancel action (f797de2)
- listview: fix keyboard scrolling causing the listview to scroll instead of changing the selected item (f567837)
- listview: header losing datacontext on ios between frame navigation (868c3ad)
- pipspager: fix pipspager to show pips correctly when MaxVisiblePips < NumberOfPages (949fe49)
- pipspager: fix vertical pipspager when number of pips is more than max visible pips (1114856)
- radiobuttons: Finalizer shouldn't access a DP (a4b2275)
- scrollviewer: fix scrollbars freezing on WASM when a pointer wheel is violently scrolled (565cf49)
- scrollviewer: fix WASM keyboard scrolling glitching specially when during long overscrolling (b421c39)
- selector: keep SelectedItem pending if set before ItemsSource (a26e8b0)
- textbox: fix textbox losing focus on WASM if alt-tabbed out then back in (328c52e)
- xamlgen: MarkupExtensions parser context (0f3b7e9)
- navbar scrollable (dd2c019)
- rewording (0df1509)
- typo (f026663)
- TreeView: raise DragItemsCompleted when dragging items is completed (67b5274)
- Provide the ability to break on invalid calls to
NSObjectExtensions.ValidateDispose
(1359637) - Set top level class name for ResourceDictionary with code-behind (b15f487)
- Use InvariantCulture for int.TryParse calls (e13d08d)
- Workaround MPE tests with MTC not enabled (ff3b546)
- xamlreader: Take xmlns into account when resolvnig setter properties (f8a273f)
- xbind: Fix x:Bind not working properly for private properties (425aedd)
- add implementation unsupported targets (ef05492)
- Add missing CompilerVisibleProperty for
UnoForceHotReloadCodeGen
(85f71e8) - Add missing Non-UI docs to toc.yml (4e996c3)
- Adjust HR documentation and error message for uno 5 upgrade (4ebdea8)
- Adjust mobile hotreload (589da55)
- Adjust msbuild tasks and nuget package for actual SHA commit (f17d3cd)
- Adjust TextBox ScrollViewer workaround for Material TextBox to wrap properly (954b367)
- Adjust Window.Closed on WinAppSDK and remove invalid constructors of CoreWindow (3bc5843)
- Adjustments to Android FileSavePicker behavior (78e952c)
- Correct UNO_REFERENCE_API condition (6bc11f3)
- Correcting handling of datacontext due to inheritance (6609f9b)
- Empty TextBlock should have non-zero height (0dcf4c1)
- Ensure the Uno WindowHost is always focused to capture keyboard events (db6f700)
- Fix AppResources hot reload stop working after 10 updates (ffc1f66)
- Fix formatting (f5a6fa0)
- Fix formatting (c6b051d)
- Fix hot-relaod of nested resource dictionnaries (16b2fff)
- Misc fixes for hot-reload testing (1a20f3d)
- Properly replace target framework for net8.0 reference (0c57c74)
- Provide the ability to troubleshoot Roslyn's hotreload (31054ae)
- Remove infinitely looping BufferingProgressBar animation from MTC template (44c4e3f)
- Restore XamlReader HR for mobile targets (f0ec731)
- Take non-top-level xmlns into account when resolving
System.Type
properties (b003710) - Workaround FlipView issue on Wasm when jumping >= 2 indices (e10c247)
- hr: Fix RegisterAttribute generation for nested/generic types (2a17b6c)
- hr: Use SDK version to run the dev server (e4326f1)
- iOS: add start/stop MotionManager events (8bf4e78)
- Avoid possible exception in hot-reload (e816bf5)
- Ensure fractional DPI is avoided in HW GTK renderer (edcf4e5)
- gtk pointer event coordinates (9b58473)
- gtk: Fix software rendering after scaling adjustments (72c0677)
- xamlgen: Use XamlBindingHelper.ConvertValue for markup extensions (025396c)
- Alter Android ResourcesGenerationTask to use
LibraryResourceDirectories
(f397d80), closes #10686 - Force the dotnet version to use by teh dev-server (4f73003)
- Formatting on PersonPictureTemplateSettings (ca52a6b)
- Repeated navigations in Frame (2c0c26f)
- Setting dispatcherqueue from current window (f797a4d)
- Use most recent available uno-runtime from packages (2997c3b)
- XamlReader does not recognize Windows.UI.Xaml.Input namespace (c98cd61)
- android: Fix KeyDown not firing for Enter key (6f803ed)
- autosuggestbox: fix keyboard navigation (ca7397f)
- combobox: tab should close the Popup if open and focus the next element in tab order instead of Popup (1b45625)
- documentation: summary tag are now default to display as list item (8c3f1f6)
- hr: Don't propagate RuntimeIdentifier so libraries can build using their natural targets (b5cc967)
- hr: Use type mapping for x:Bind inner bindings class (8b44f26)
- lottie: Use a net8 compatible property for lottie/skiasharp detection (088ac8e)
- mediaplayerelement: fix MPE position when scrolling (b61ce53)
- scrollviewer: a ScrollViewer should not scroll an outer ScrollViewer (806e7fe)
- scrollviewer: keyboard scrolling with arrow keys (d92fefb)
- ScheduleActionAfterWait should not use DispatcherHelper (702f9b5)
- Stopping Storyboard scheduled for completion (f7afcd1)
- scrollviewer: make scrolling cancelable when Handled = true on WASM (1c45a25)
- wasm: Prevent browser from stealing pointer events for None ManipulationModes (e075844)
- wasm: ProgressRing doesnt stop upon exiting indeterminate state (e0f2a3f)
- Add missing mergedstyles change (fead950)
- Making classes accessible to windows via uno.ui.toolkit (50607d7)
- systemfocusvisual: consider clipping (6301f6c)
- xamlgen: Set attached property setter when its type is ResourceDictionary (9dfe6b5)
- TextWrapping of TextBlock doesn't work properly on Safari 17 (2dc1f82)