3.8.6
The new 3.8 release ports additional WinUI controls and layouts, such as the often-requested CalendarDatePicker
control, to all Uno-supported platforms getting us one huge step closer to realizing the #WinUIEverywhere vision.
In addition, the new release brings up to 2x performance improvements in some scenarios, realized from the new Grid
implementation as well as DependencyObject
and UI Elements creation improvements. We also introduced new AOT and WebAssembly features, built on top of recently released Microsoft work on .NET.
On the Linux front we are pleased to enable new scenarios so you can target embedded systems using the FrameBuffer as well.
In addition to new UI and Performance features and improvements, the team has closed many issues. Closing issues timely is crucial in further fueling large projects enabling customers like Kahua to port a massive line of business applications from desktop to Web. We are particularly proud of the fact that with every release we close more issues than have been opened in the previous period; it shows a healthy and quickly maturing open-source project. Our huge thanks go to all our contributors @xperiandri, @Crixerker, @mterwoord, @scolapicchioni, @trungnt2910, @johnthepro and @pkar70!
See all the detailed updates in our blog post.
Features
- Cursors loaded from Gtk display theme. Support for more cursors on Gtk 6ce492a
- calendar: Add support for Chrome eabe306
- calendar: Add support of selection (and navigating back to Decade/Year mode to Day mode) b6d1dc6
- calendar: Enable auto scrolling to today 1589851
- calendar: Enable phase loading 0badfcf
- calendar: Implement virtualisation 430fe39
- calendar: Improve scrolling experience 7d564b2
- calendar: Initial import of the CalendarView 392e356
- calendar: Make some items visible! 53cca3f
- calendar: Make the CalendarView header appear, allowing to change display mode 099bbf7
- calendardatepicker: just finished translating the WinUI C++ code for CalendarDatePicker f0c90b4
- calendardatepicker: Set default Min/Max date for CalendarDatePicker to +/- 100 years. 4e3180b
- CalendarView: Add Uno specific properties to make styling easier 4044058
- GTK: Launcher.QueryUriSupportAsync support for Gtk Linux ca677a8
- WPF: Launcher.QueryUriSupportAsync support for WPF 3049f16
- Add ControlsResourcesVersion property for WinUI 2.6 compatability 65fe529
- Add support for Linux FrameBuffer and libinput c3550b9
- Add template support for Linux FrameBuffer ba04fc8
- Add the BorderLayerRenderer on wasm 590350b
- App/Window activation and visibility on Android fb18f1f
- App/Window activation and visibility on GTK 7b711d2
- App/Window activation and visibility on iOS 5dbf801
- App/Window activation and visibility on WASM 8b7914f
- App/Window activation and visibility on WPF 2a7959c
- missing ActivationKind values bfd6cd4
- Support for WinUI's internal DXamlCore.GetLocalizedResourceString() 83dbbe4
- Upgrade cross-platform library template to uwp 18362 0839b79
- scrollviewer: Implement the SCP.ScrollOwner (avoids anoying logs on wasm, android and ios) ab3ccb6
- App/Window activation and visibility on macOS d32ba14
- Application.Exit on GTK and WPF 55bfe8a
- Update wasm templates to use .NET 5 64f6639
- Use preventDefault to prevent browser from processing Handled events 974f689
- ApplicationView: IsViewModeSupported, TryEnterViewModeAsync 23493ac
- grid: Replaced the logic by the WinUI's one. ea0b254
- layoutpanel: Implementation of LayoutPanel f2380ef
- scrollviewer: Add ability to configure scrollbar's auto-hide delay, and fully disable auto-hide a5ec556
- showlocalvisualtree: Improved the display of
.ShowLocalVisualTree()
by adding details about Grid/Canvas positioning. 96b8086 - uniformgridlayout: First working version of UniformGridLayout 7f0a361
- Support for iOS universal links 3a7253e
Performance Improvements
-
[Skia] Remove weak registrations in UIElement constructor e84146f
-
[Wasm] Don't deserialize unused TS interop output 52f5b5d
-
[Wasm] Improve
UIElement.Visibility
set toCollapsed
0be67af -
[Wasm] Improve SetBackgroundBrush performance 14d996e
-
[Wasm] Improve text set color 07c794b
-
[Wasm] Register on ScrollContentPresenter pointer events only when native d25f9cc
-
[Wasm] Restore conditional DO hard references b968add
-
Add various controls creation benchmarks 1de5dac
-
Build only one logger for static style methods f4651c9
-
Explicitly limit DependencyPropertyDetail array pool max length 34923c4
-
Generate
Brush.Opacity
andRelativeTransform
DPs 516fbb6 -
Improve DependencyPropertyDetails performance 640a543
-
Initialize
UIElement.KeyboardAcceleratorsProperty
lazily 61c4223 -
Make
Grid.RowDefinitions
andColumnDefinitions
lazy initialized feaad83 -
Make VisualState and VisualTransition lazy loaded 64a79fc
-
misc performance improvements on
DependencyObjectStore
9c01d26 -
Move all UIElement TextHelpers to UIElement c1a776b
-
Push active system theme to ResourceDictionary 2322829
-
Reduce foreach/linq usage in pointers management d5b622a
-
Remove unused WeakReference read-back on creation 6cfe4c8
-
Skip ClearPointersStateIfNeeded during ctor 7d74f48
-
Use cached DependencyProperty comparer 6ef9e81
-
grid: Added more cases to Grid benchmark 3ae96b1
-
VisualState: Create
VisualState.Setters
andStateTriggers
backing collections lazily 5c14003 -
Use for loops in DependencyObjectCollection 0f64934
-
grid: Added a new multidimension test to grid. 53b3618
-
fix!: Exclude Windows.UI.Xaml.UIElementExtensions from Xamarin platforms 3cbea4f
Bug Fixes
- reg: Add missing FocusVisualLayer fddc5b0
- Fix Xaml merge task not supproting conditional namespaces e76c7ec
- ApplicationLanguages: Prevent NullReferenceException for ManifestLanguages 60a913f
- calendar: Avoid flicker when changing DisplayMode 9179695
- calendar: Fix background not applied properly on all items ec1c39f
- calendar: Fix blackout foreground color 08229b9
- calendar: Fix decade and year view scrolling on wasm 819e28e
- calendar: Fix decade/year/month navigation bc51190
- calendar: Fix first date always top/left 4702c59
- calendar: Fix measurement issues 077f48e
- calendar: Fix possible blank year view when opening closing calendar picker multiple times 02a25e8
- calendar: Fix possible null ref in measure 70c5afa
- calendar: Fix possible null-ref d589e89
- calendar: Fix possibly failing assert ddb505a
- calendar: Fix scrolling issues on iOS (inc. allow ChangeView on SV when not yet arranged) f9f463d
- calendar: Fix stretching on iOS 7af5a44
- calendar: Fix the Month and Decade views on Android 5cf9732
- calendar: Fix today + selected visual state c473ae1
- calendar: Fix vertical stretching (most probably not on Android and iOS) 31ae25b
- calendar: Improve reliability of calendar by safely handling invalid cases 6bf96e5
- calendar: Make sure to always fill the viewport aa570e4
- calendarpicker: Make sure to clear the over visual state when closing and re-opening the picker a19d2c8
- calendarview: Fixed #6160 c0c1bc5
- calendarview: Removed a potential exception while recycling elements 7685dcb
- Use UNO_BOOTSTRAP_WEBAPP_BASE_PATH to support path-based deep-linking 890d5d5
- calendar: Fixed a potential crash when
SetToMin()
/SetToMax()
were used in multi-eras calendars 9549557 - calendar: Year and Decade views are not working on Android d4b1a81
- calendardatepicker: Fixed compilation on other platforms af2bf91
- calendardatepicker: Now closes the opened picker when the control is unloading 9121bd9
- calendarview: fixed potential NRE when unloaded before being fully initialized 34657f0
- TextBox: Update fluent textbox resources and style to match the latest WinUI source code [Reunion 0.5] and fix resources for dark theme ee22bc5
- XamlFileGenerator: Generate literal properties for ResourceDictionary subclasses f5b7e4b
- xamlloader: Fixed potential NRE error when loading problematic XAML content f53c955
- Fix ChangedView raised too early 32ecb8d
- Fix dependency generation not allowing to set only DPChangedCallbackName 89de363
- Fix merge issues a5392e6
- Possible null-ref in MenuBar d46acd2
- Restore ability to have empty control template 55b18a8
- Setting JumpListItem.Description null crashes on Android 4625009
- calendardatepicker: fixed date picking were not working. 7e170e2
- calendardatepicker: Fixed default value for .Date : should be null, not DateTimeOffset.MinValue. 93ecfca
- calendarview: Fixed default min/max dates for CalendarView to use the same logic as other date-related controls. 4f4bcad
- enability: Fixed a recent regression in generated code about IsEnable property 7b8bacd
- pointer: IsLeftButtonPressed were wrongly true on the PointerRelease event e89a48b
- remotecontrol: Fixed annoying "Uri format" parsing error while launching apps with RemoteControl activated. cf88024
- samplesapp: Fixed NRE during application starting. 9943d91
- xBind: Add support
{x:Null}
syntax 1a6c2fd - BindingHelper may not provide properties when using WinUI fa1d1ad
- Fix compilation of the ref library ba767c5
- Fix possible scroll to out of bounds of the SV on iOS d1f0296
- Fixes DP generation 8ba9656
- skiagtk: Remove unused incorrect dependency in
Uno.UI.Runtime.Skia.Gtk
andFrameBuffer
aaf1809 - TextBox: Remove FocusRing on macOS 53ec039
- Incorrect SymbolIcon NotImplemented attribute platform list 6f0f98a
- Invalid warning when building with UWP and referencing the Uno.UI package 383e553
- Prism template WebAssembly project is missing 0920bd9
- Update BindableTypeProvidersSourceGenerator to be stateless per generation 6238d7b
- Use absolute path resolution for AppManifest 51c70bb
- treeview: Fix error when items of last nested item are cleared 35cbb69
- Typo in prism template initialization 2b1bb95
- applicationlanguages: Added support for Script Subtag for ApplicationLanguages.PrimaryLanguageOverride fa13149
- Border: Fix EvenOdd winding paths when drawing corner radii 2176f87
- combobox: [Android] Fix ComboBox background disappearing 0ab27e5
- datepicker: Adjust picker flyout placement 7046ab0
- datepicker: Default date were not set when the control were created. daf4812
- datepicker: Fix datePicker .Date is not correctly updated. e435d25
- datepicker_flyout: Adjust the flyout placement to appear at the right place on all platforms. 1b4e0b2
- DisplayInformation: [Android] DisplayInformation cannot be used too early d101fd5
- generation: Add a warning when project path contains
#
497ffa6 - grid: Ensure the layout of the Grid is invalidated when the collection of definitions changes. c0dc1a9
- grid: Fix a bug with new Grid implementation on Skia where the "Pixel" mode were not properly applied when the UseLayoutRounding were true. db07a62
- grid: Fix regression when setting ColumnDefinition.Width cb3b962
- grid: Fixed a problem when the collection could be locked more than once. 91db60b
- grid: prevent a NullRef Exception when .Arrange() is called before .Measure() 1eea149
- grid: Removed the possibility of a NullRefException when .Arrange() is called before calling .Measure() first. ccff7f9
- grid: The RowDefinition and ColumnDefinition were implementing the IList twice, causing compilation resolution problems in application code. cf07412
- GTK: pointer events in wrong locations using Wayland a7b59c0, closes #5706
- macos: Fixed the macOS solution to include missing projects. 9ae6877
- pointers: [Skia] Fix some pointers event not being sent to nested elements when pointer implictly captured f7f9cf0
- pointers: ManipCompleted is not invoked when pointer is stoll by SV and pointer is out of the bounds the element 8c651da
- popup: Put Popup in Parent hierarchy of its Child content. aa1755a
- RadioButtons: Ensure RadioButton is selected on initial load f93eac3
- RadioButtons: Fix MaxColumns is not bound properly 68c72c8
- rc: Adjust server processors path dd39a82
- remotecontrol: safe fallback when directories search list is empty 80f1493
- revealbrush: Use RevealBrush FallbackColor 035c614
- Possible NRE when applying visual state setters on unknown targets b995392
- scrollbar: Fix ValueChanged event not raised d8f6026
- WASM: SrollViewer.ChangeView to end of page 59fd566
- Build fails Samples App on iOS 7d66918
- test: Ensure
[ActivePlatform]
in UI Tests works with NUnit's[TestCase]
d4ab54c - Bump uno.sourcegenerationtasks for VS 16.10 Pre 3 compatibility 2cc347b
- Changed default PointerID to 1 to match UWP 0a30b82
- Fixed a bug with tracing in ItemsRepeater where some strings were crashing the app 737ed24
- Large file write in WASM 21fd698
- Make WASM file picker configuration available for reference API 55927cc
- Propagate x:DefaultBindMode to DataTemplate definitions b92b42b
- Use stable uri for WebView_NavigateToAnchor dd4b614
- dotnetTemplate: Fixed Window losing scope on Windows 0d5418d
- scrollviewer: [WASM] Vertical native scrollbar could appears if the extent is smaller or as tall as the viewport dc33b68
- selector: Don't push null selection to binding when unloading Selector ff0cd13
- shape: prevent shapes from returning a negative desired size. 6ed4ac1
- showlocalvisualtree: Were only available in DEBUG on MacOS. a3cada9
- template: Remove blue background 9f2328f
- themeresource: Update ComboBox when theme changes 6567560
- uniformgridlayout: Fix issue with gaps in "generate back" algorighm with operating in virtual. b39e9e2
- xbind: Don't set bindings on x:Load on the actual element bb0d65e
- xBind: Ensure
Setter
is being refreshed on ElementNameSubject changes b48bf0f - xLoad: Ensure re-evaluation of StaticResource markup 5c45ad6
- xUid: Ensure proper collection termination when using x:Uid 6fadcd2
- Avoid StackOverflow for multiline TextBox, fail on remove 23946e1
- ContentDialog now ignores button clicks and Hide() calls while handling events like in UWP. 7f20a26
- ElevatedView should not be tab stop 5984a99
- On Skia/WPF setting .IsReadonly to true for TextBox doesn't work. This should fix things. 883cc66
- Remote control for winui a1ff315
- Remove TaskCompletionSource.SetResult calls from button click handlers so deferral is handled correctly and result is not set twice. 890e912