uno

Build Mobile, Desktop and WebAssembly apps with C# and XAML. Today. Open source and professionally supported.

APACHE-2.0 License

Stars
8.3K
Committers
299

Bot releases are hidden (Show)

uno - 3.8.6

Published by jeromelaban over 3 years ago

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 to Collapsed 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 and RelativeTransform DPs 516fbb6

  • Improve DependencyPropertyDetails performance 640a543

  • Initialize UIElement.KeyboardAcceleratorsProperty lazily 61c4223

  • Make Grid.RowDefinitions and ColumnDefinitions 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 and StateTriggers 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 https://github.com/unoplatform/uno/issues/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 and FrameBuffer 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
uno - 3.7.3

Published by jeromelaban over 3 years ago

Uno Platform 3.7 expands our support for the newest WinUI, Project Reunion and Linux, all while continuing performance improvements for WebAssembly head.

This release includes:

  • A new SwipeControl
  • GTK/Skia TextBox support
  • Performance improvements
  • WebAuthenticationBroker for Android
  • Project Reunion 0.5.5 updates

and many contributors updates:

  • @luke-welton fixed an issue in the WinUI template caused by invalid collection of the main window
  • @microhobby contributed fixes to pointers support in the very new support for WSLg on Windows 10, and dotnet new templates fixes.
  • @iosub contributed a fix to the native TimePicker control for Android not showing up properly
  • @trungnt2910 contributed a fix for the FileSavePicker on WebAssembly for not providing proper file extensions
  • @workgroupengineering contributed a fix for the Visual Studio extensions to enable automatic installation of core pre-requisites, which will help those of you completely new to the .NET ecosystem to set up a project.
  • @pkar70 contributed implementations for common WinRT classes

To all our contributors: Thank you!

For more details, visit our blog post.

Features

  • Support for iOS universal links 3a7253e
  • Upgrade template to Reunion 0.5.5 c57f1bd
  • animations: Add compositor thread on Android 077511b
  • authentication_broker: Added support for Android. c1d057f
  • FocusVisuals: SystemFocusVisual control 66293ac
  • fontIconSource: Add basic support of FontIconSource 67ca382
  • GTK: Support for some GTK TextBox visual properties, clear button 8f7ab5c
  • swipecontrol: Add source commit id in headers bd2371c
  • swipecontrol: Add support for simulated inertia. 2f1dbfa
  • swipecontrol: Implement minimal gestures on Skia. e460f34
  • swipecontrol: Implement SwipeItem cd6c42b
  • swipecontrol: Implement SwipeTestHooks dcdd0fc
  • swipecontrol: Implement the core of the SwipeControl 3bfc847
  • swipecontrol: Import properties files 3f6c86e
  • swipecontrol: Initial import 3908581
  • swipecontrol: Set namespaces f8d6d43
  • swipeControl: Implement SwipeItems bb90161
  • Add feature flag to configure NotImplemented log level 9a07c7b
  • WPF: Add support for visual properties on WPF TextBox, clear button 19e6680
  • Add Uno.WinUI compatibility for net5-windows c04b549
  • ChatMessage, fields for ChatMessageReader 7101c84
  • ContactQueryOptions and ContactBatch (Android) 2879bd8
  • Multiline TextBlock rendering 3c61d3c
  • vsix: Automatic installing prerequisites. 150c161
  • CookieManager b4d18a5, closes #5431
  • Geofence for all platforms 074c6a2
  • Implement HttpCookie class 3628d08
  • Support for HttpCookie class 90b0cc8

Performance Improvements

  • Add DependencyObject benchmarks deee2f3
  • Add HashTableEx specialized for internal lookups b085b63
  • add PropertyMetadataDictionary for faster GetMetadata 292522c
  • Avoid using statment in hot binding path 2d02800
  • Cache Marshal.SizeOf values 746ba84
  • Cache self style key to avoid Type.ToString invocations 3b40a9c
  • DependencyPropertyRegistry improvement ab54bd7
  • Don't create attached stores on bindable propagation ef17b62
  • don't manipulate the classes list on arranged e820c2b
  • Don't rely on reflection for Marshal.PtrToStructure 20ea231
  • FrameworkProperties for type performance 366d36e
  • Improve name to DependencyProperty lookup 4bce59b
  • Remove foreach statement in SubscribeToPropertyChanged 5f0aed5
  • Remove HashtableEx version validation and concurrency validation 777f88a
  • remove unused property lookup 8b88c0b
  • Remove use of generic delegate in Brush.AssignAndObserveBrush bb71491
  • TypeToProperties cache improvements 889dd55
  • Update DependencyPropertyCacheEntry comparer 0f723f3

Bug Fixes

  • Remote control for winui a1ff315
  • dotnetTemplate: Fixed Window losing scope on Windows 0d5418d
  • Fix NRE from x:Bind two-way through converter 101e5bf
  • No scrollbars in ScrollViewer on skia and WASM c0474c6
  • TheadPoolTimer.CreatePeriodicTimer raises events properly 33f50d4
  • FileSavePicker: Group extensions by the mime types. All file extensions now show properly on WASM target 3229b4b
  • FileSavePicker: Use generic MimeType / for WASM. FileSavePicker now does not show unwanted extensions. Fixes #5685 c31eafc, closes #5685
  • GTK: pointer events in wrong locations using Wayland a7b59c0, closes #5706
  • html_custom_event: Fixed a hard-coded exception when processing custom html events. Was visible mostly when more than one handler was registered on the same event. 3368739
  • Pointers: Ignore GTK ungrab mode for window leave notification b4bb98c
  • popup: [iOS/Droid] not responding 89ef822
  • rc: Adjust server processors path dd39a82
  • template: Remove blue background 9f2328f
  • textblock: On Wasm, the <TextBlock> were not properly displaying the ellipsis on text overflow, because the CSS requires the overflow: hidden to be applied. 160a506
  • textbox: Update on Foreground brush Color changed 96b7371
  • Add Bindable attribute on VirtualizingPanelLayout 3ee4070
  • Add ContentTemplate Binding to TextBlockButtonStyle 10162ca
  • Adjust error message for FileOpenPicker 9a35c32
  • Adjust generation for x:Bind events in x:Load context 0938736
  • Adjust incorrect generation behavior during roslyn design-time build 8f6bf1f
  • Adjust NotImplemented for file pickers f952c3e, closes #5766
  • Adjust Roslyn generators support for UnoUISourceGeneratorDebuggerBreak e91067c
  • Adjust Skia GTK target override for netcoreapp3.1 beff850
  • Contact FullName fix 75b0b87
  • Ensure Fluent style placeholders in ComboBox and TextBox update when theme changes d7837d6
  • Invalid defines for WinUI 3 template a4c3d3f
  • x:Bind typeof expression for nullable reference 9518f7d
  • Border: Adjust max radius for inner border shape 81654c1
  • listview: Fix ItemTemplateSelector not working with Fluent styles 5393841
  • templates: Make UWP head mandatory 2fee3e1
  • TimePicker: Make sure Android flyout opens 0701e4f
  • Apply ContentTemplateSelector with Fluent styles 51b8edf
  • AutoSuggestBox.QueryIcon does not work 1486945, closes #5545
  • BorderLayerRenderer accumulates shape visuals 9417b2d
  • Do not close JS stream reader if closed 4fa0db3
  • Do not throw on read stream Flush 3b67dd4, closes #5751
  • Fix native horizontal scrollbar remains visible on FF 2a4e199
  • Fix spurious DataContext propagation in ContentControl 996d574
  • FullAOT may fail for missing generated marshaller b387786
  • Handle errors from Brush callbacks for disposed views 4ad04fe
  • Improve internal debug info d2a0583
  • Project Reunion logging and Suspending event adjustments f3e30d0
  • Renew UWP samples app certificate 995a4af
  • droid: issues when navigating back 0f8a4c9
  • NativeFramePresenter: [iOS] Fix a bug where pre-populated frames would log errors when displayed. 17c04dc
  • perf: Don't materialize unneeded theme dictionaries 4ad6e86
  • textblock: [WASM]Removed a useless scrollbar appearing sometimes on TextBlock c888b36
  • themeresource: Update VisualState.Setter value when theme changes b9440c7
  • xbind: Support nested expression x:Bind events af614a0
  • VS 16.9 uap build should not run roslyn source generators c7de633
uno - 3.6.6

Published by jeromelaban over 3 years ago

The wait is over! The next generation Windows developer platform – WinUI 3 – has been officially released to the public, alongside Project Reunion 0.5. To empower you to have #WinUIEverywhere on the day it launches we are also releasing Uno Platform 3.6. Our appreciation goes to Microsoft WinUI team for keeping us posted on your progress, in order for us to have day-0 support for WinUI.

In addition to WinUI and Project Reunion support, we are also releasing highly-requested DatePicker and File Picking controls (Open, Save, Folder), a new Cupertino-like theme, OpenId Connect, WebAuthenticationBroker and are continuing support Windows Community Toolkit and its newest release - 7.0! Lastly, we have restructured and added more documentation to our docs – one of the main improvements you asked for in our annual survey.

For more details, read the full release blog.

Here are some of this release features and improvements :

  • FileOpenPicker, FileSavePicker, FolderPicker support (@MartinZikmund, @Arlodotexe)
  • Fluent Styles by default in templates (@jeromelaban)
  • Microsoft Logging packages upgrade to 5.0.0 (@jeromelaban)
  • Support for ApplicationLanguage.PrimaryLanguageOverride (@carldebilly)
  • DatePicker and LoopingSelector (@carldebilly)
  • WebAuthenticationBroker and OpenID Connect support (@carldebilly)
  • Support for DispatcherQueue (@carldebilly)
  • Touch support for Skia GTK, including ScrollViewer (@dr1rrb)
  • Support ApiInformation.IsTypePresent in conditional Xaml (@davidjohnoliver)
  • Project Reunion 0.5 templates update (@jeromelaban)
  • Managed ScrollViewer for macOS (@dr1rrb)
  • ResourceDictionary performance improvements (30% improvement on worst case read) (@jeromelaban)
  • BindingPath performance and allocation improvements (@dr1rrb)
  • Silverlight migration documentation (@darenm)
  • Documentation improvements (@davidjohnoliver, @Xiaoy312, @ajpinedam)

And many bug fixes, with some highlights:

  • Large updates for shapes rendering on Android, increasing the shared code base (@kazo0)
  • macOS: minimize window button (3846938) (@ajpinedam)
  • ImageBrush: [WASM] Fix stretch and alignment for ImageBrush as Shape Fill (38b6205) (@kazo0)
  • ImageBrush: [Skia] Apply ImageBrush.Transform (573105b) (@jeromelaban)
  • Many iOS/Android CommandBar fixes (@ajpinedam)
    • vsix: RemoteControl.VS throw exception during VS closing. (3e27b6b) (@workgroupengineering)
  • WriteableBitmap: [Skia] Fix Invalidate not working (546b431) (@jeromelaban)
  • dotnetnew: -wasm=false exclude UnoQuickStart.Wasm (3414bef) (@microhobby)
  • Native TimePicker fixes (https://github.com/unoplatform/uno/pull/4812) (@iosub)

Here's the extended changelog:

Features

  • Add ability to style DatePickerFlyoutPresenter (1f96c0b)
  • Add support for PointerWheel events on macOS (a95db8f)
  • Add support of managed SCP for coordinates computations (17ca9d9)
  • Android FileOpenPicker (2b53633)
  • Android FileSavePicker (fb772af)
  • Android FolderPicker (2db906a)
  • Android SAF StorageFolder/File operations (1eb6b53)
  • Custom dispatch pointer events on macOS (2b00bcd)
  • Enable fluent styles by default in app templates (9c78ab2)
  • Enable managed scroll in macOS SV template (b27f2a7)
  • Enabled the managed scrollviewer on macOS (a9dd550)
  • Extension to allow for FileSavePicker implementation (acaa7b6)
  • iOS FileOpenPicker (b28b8df)
  • iOS FolderPicker (21244db)
  • macOS support for FileOpenPicker (84f3bbe)
  • StorageFolder/File operations iOS (6ac3961)
  • Update ScrollViewer's templates for macOS (7471a78)
  • Update templates to use Microsoft Logging 5.0.0 (da09f10)
  • Upgrade unoapp-winui template to Reunion 0.5 (bad3b05)
  • applicationlanguages: Implemented ApplicationLanguage.PrimaryLanguageOverride (07bb5cc)
  • calendar: Ensure Calendar & DateTimeFormatter are following ApplicationLanguages state (7dd5a7e)
  • datepicker: Changed DatePicker to default on native picker on iOS & Android. (94004df)
  • datepicker: First working version of DatePicker (d50fb77)
  • datepicker: Use LoopingSelector instead of ListView for non-native DatePicker. (0a5203b)
  • dependecyproperty: Implemented this.RegisterDefaultValueProvider() (5dd3a34)
  • dispatcherqueue: DispatcherQueue implementation (e6dfb03)
  • double: Unify .IsFinite() method extension for all platforms. (29f9f2a)
  • droid: Add FeatureConfiguration flag (a8aedb8)
  • pointers: Add support for window pointer enter/exit required for complete sequence with touch pointer (4d43906)
  • pointers: Add support of touch inputs on skia GTK (cbb4be1)
  • runtimetests: Output text is now selectable (0bc7414)
  • scrollviewer: Add support of touch scrolling in managed ScrollViewer (no inertia yet) (5697db6)
  • scrollviewer: Prevent touch scrolling on forbidden axis (c906316)
  • Add CommandBar Sample Page (fdcaa98)
  • Add CommandBar SamplePage (266ebc5)
  • Add native filesystem folder picker (bdc424c)
  • Add support for .NET 5 target for Wasm/Skia (5e7bc64)
  • Add support for manual tests tagging (342b0d9)
  • Basic Launcher.OpenUriAsync support on Skia (a3dada5)
  • Change TextBlock Default FontSize (985aab9)
  • FileOpenPicker on Skia WPF (869481f)
  • FileSavePicker on Skia WPF (16a834e)
  • Launcher support on Tizen (0754994)
  • Support for Native FileSavePicker (d9e32fd)
  • Support for Storage.Pickers collections (2f717d9)
  • Update BaseStyle fontsize (4f375bb)
  • Update controls to match UWP default FontSize (cbf15ec)
  • Update Styles to match Default UWP FontSize (f77b6db)
  • Upgrade to ES2017, including ES2018 types (81ae3ca)
  • Upgrade to ES2017, including ES2018 types (194c204)
  • Upload-based file open picker (c6549f7)
  • Use managed scroll for MacOS (b1ef283)
  • showlocalvisualtree: Improved the output of ShowLocalVisualTree (ba1b7ee)
  • showlocalvisualtree: Unify the content of .ShowLocalVisualTree() (23fa7f9)
  • snappoints: Added support for Snap Points in ScrollViewer (a7158b4)
  • textbox: [MacOS] Added support for AcceptReturns (da6d689)
  • textbox: [MacOS] Removed direct usage of SolidColorBrush to get the Foreground color. (8860de6)
  • xaml: Support IsTypePresent in conditional Xaml (7bdff09)

Performance Improvements

  • Add support for benchmarks (c4a5cb4)
  • Enable property caching for ColumnDefinition and RowDefinition (31fada8)
  • Improve ResourceDictionary performance (82480ae)
  • Remove generics from TSInteropMarshaller (3e2b427)
  • Use fast property for Border Padding and BorderThickness (4a31d8d)
  • Use property caching for Border.BorderBrush (6cbada0)
  • Use for loop for children enumeration (c89fe21)

Bug Fixes

  • Android: Load html from string for Android 10 and upper (f367dc5)
  • dotnet_new: invalid template expansion removing C# conditionals (fa065ee)
  • loopingselector: Fix a glitch in LoopingSelector related to way ScrollViewer events are raised. (a0486d9)
  • [macOS] ignore evnts out of the window's bounds so native buttons (close/maximize) works (7a2589d)
  • Add missing compilation flag (f961754)
  • Adjust nuspec dependencies for Uno.Core (be9d0e8)
  • Avoid flicker in SV when an hidden element is taller than viewport (b5da4ee)
  • Defer NavViewItem pressed and over states only for Android (816d071)
  • Do not materialize ElementStub if no parent (5fca6db)
  • DualScreen, Maps invalid Uno.WinUI dependency (367f234)
  • Fix build for skia (2fe27c1)
  • Fix build macOS (9bb4baf)
  • Fix build on Android and iOS (2174a4f)
  • Fix build on CI (43e0419)
  • Flaky roslyn source generator dependency compilation (17bb8a9)
  • Remove workaround which is no longer valid (34d6f24)
  • BorderLayerRenderer: [iOS/Skia] Adjust corner radius when drawing inner path of border to account of stroke thickness offset (f5bdc41)
  • datepicker: Continuation must be on UI Thread (52b3ac7)
  • datepicker: fix generated of months and days. (3f622bc)
  • DatePicker: Set default date to Today's Date (35b5649)
  • DepdendencyObject: Don't use IEnmerable when propagating the DataContext (df5a695)
  • dotnetnew: -wasm=false exclude UnoQuickStart.Wasm (3414bef)
  • flyoutbase: Fixed a potential NullRef Exception on .Open() (94013b0)
  • Hyperlink: Use SystemControlHyperlinkTextBrush for Wasm Hyperlink (6bed89f)
  • ImageBrush: [iOS/Android] subscribe to ImageBrush property changes (8901310)
  • iOS: CommandBar.TitleView overlapping AppBarButton (794d076)
  • loopingselector: A useless exception were raised when ItemHeight were not the first property assigned. (c66e87f)
  • loopingselector: Changed the way the fix was done to prevent automatic re-selection for a better approach (addressing the real cause: the synchronous ViewChanged from the ScrollViewer) (4cae68a)
  • Path: [Android] fix certain paths being skewed (7a805b9)
  • reg: Adjust samples app Xamarin.AndroidX.RecyclerView version (bb90863)
  • Invalid vtable setup for latest android builds (eebcd48)
  • macOS: Null pointer opening popup (b1a1c13)
  • Fix NotImplemented statuses on WASM and Skia (4f2f4dd)
  • Fix rebase conflicts (4c2d993)
  • Fixed a regression with ScrollViewer on iOS were ScrollViewer were leaking because of a useless event subscription for Snap Points. (4924237)
  • NavigationView Fluent template differs (e465e41), closes #5430
  • macOS: minimize window button (3846938)
  • pointers: Fix pointers routed events always reporting mouse device (e2267c5)
  • scrollviewer: Make to properly propagate to the SCP the can scroll (e361d39)
  • Fix compilation on macOS (d59a342)
  • Make sure to not include manual test in screenshots compare tool (628bba4)
  • Minor multi-targetting fixes (6793112)
  • animation: Animations are chopped when BeginTime set (33ac094)
  • borderbrush: [Android] [WASM] Fix BorderBrush.Color not updating (ef15f08)
  • calendar: Fixed PM mode when time is after noon. (c456f32)
  • datepicker: DatePickerValueChanged old vs new were inversed. (06ad14b)
  • datepicker: DatePickerValueChanged were raised twice (45c6c58)
  • datepicker: Fixed NRE due to not initialized member variables on Skia. (2bc77af)
  • datepicker: Make sure DatePicker field ordering is correct (91408f4)
  • datetimeformatter: Allow format template with braces in constructor. (086addb)
  • fluent: Exclude SplitView fluent style to fallback on UWP's version (546ca1e)
  • flyout: Fix flyout doesn't fall back to preferred position (9f7c31e)
  • flyoutbase: Workaround for Android delayed "Loaded" event (e2a659b)
  • FrameworkElement: [macOS] Ensure we set parent to a DependencyObject (81bb0b3)
  • gridview: [macOS] Ensure GridView shows items (f14ecfa)
  • ImageBrush: [Skia] Apply ImageBrush.Transform (573105b)
  • ImageBrush: [WASM] Fix stretch and alignment for ImageBrush as Shape Fill (38b6205)
  • iOS: CommandBar NativePresenter overlapping titles (f2013e8)
  • iOS: CommandBar.Title overlapping AppBarButtons (0293230)
  • iOS: Date and TimePicker for older versions (da4729b)
  • iOS: DatePicker Flyout actions (1668f02)
  • iOS: Nullreference exception while casting (4b54098)
  • iOS: TitleView LayoutSlotWithMarginsAndAlignments (d0f4c3d)
  • loopingselector: Fixed a weird "automatic reselection" on iOS & Android, caused by event sequencing. (36a9c0c)
  • loopingselector: Fixed bug when list is changed, it wasn't updated in LoopingSelector because it was the same instance (and property changed not raised by DependencyProperty) (d1eeaa7)
  • macOS: Textbox Focus (b7d3def)
  • nativedatepicker: Fixed native datepicker flyout after rebase (99e3663)
  • passwordbox: Added support for autogrow on on MacOS (e30088b)
  • perf: [ArrayPool] Remove useless abstract method (02b1ad0)
  • perf: Defer the pointer's visual states of NavigationViewItem (596f167)
  • perf: Do not box CornerRadius for equality check (8a0ea79)
  • perf: Improve ItemsRepeater perf by avoiding useless InvalidateMeasure and viewport computation & propagation (33197e1)
  • perf: Improve performance of Grid layouting by caching temporary array (107f722)
  • perf: Prevent ItemsRepeater to invalidate visual tree too often while scrolling (f331879)
  • perf: Refactor BindingPath parsing to be allocation less (fd67fc9)
  • scrollviewer: Fixed the behavior of the ScrollViewer & ScrollContentPresenter to be closer to UWP/WinUI (079d78d)
  • selector: Fixed a potential out of range exeption in Selector (3989f3e)
  • textbox: Fixed autogrow of on MacOS (5cac02e)
  • textbox: Multilines textbox on Wasm were not properly measured. (50b559d)
  • WriteableBitmap: [Skia] Fix invalid pixel format (32c83ef)
  • xamlreader: XamlSchemaContext leaks when hooking on AppDomain.AssemblyLoad (a188586)
  • [Perf] Use ArrayPool for _resCache (98a2b31)
  • Adjust the Uno.Core version for UWP template (eef5864)
  • Applied PR suggestions (68643a4), closes #3916 #4447
  • Avoid logger reuse in resource generation tasks (9d401e4)
  • Bump UWP min version to 10.0.18362.0 (5a42135)
  • Check IsEnabled before triggering routed events (58b29cd)
  • Disable anoying log for pointer capture not supported on GTK and Tizen (e105e9b)
  • Do not prevent dispatch of events on control that are disabled (e1a57e0)
  • Enable autoflush for FileIO.WriteText (2d6525a)
  • Limit disabled SelectorItem pointer states (2ca6867)
  • Possible invalid memory copy when using SkiaCompositionSurface (c0ed22d)
  • perf: Use generated DP for CornerRadius to avoid massive boxing in layouting (9137189)
  • reg: Avoid common namespace name conflict (e9acc20)
  • reg: Fallback on reflection for loggers cleanup (685b142)
  • scrollcontentpresenter: Fixed a regression with recent chagnes to ScrollContentPresenter where the Extent on Wasm was unable to shrink (2cc8cad)
  • scrollviewer: Fix calculation of Extent on ScrollViewer (97a5e2d)
  • stroke: [Android] [WASM] Fix Stroke.Color not updating (d92e8be)
  • vsix: Correct message when Uno Remote Control service has invalid (cc19803)
  • vsix: RemoteControl.VS throw exception during VS closing. (3e27b6b)
  • vsix: System.NotImplementedException when in solution there is unloaded project. (2ad8405)
  • wasm: Pivot content when using bindings (6b34512)
  • WriteableBitmap: [Skia] Fix Invalidate not working (546b431)
  • ElevatedView does not show up on Skia (65d001e)
  • Fix changes to IsEnabled reflected witha delay (ccaeb18)
  • Improve performance of pointers on macOS (de18786)
  • NullReferenceException opt-out telemetry (28207c2)
  • Remove the use of Uno.Core in Resource generation tasks (11bacf3)
  • textbox: [MacOS] Allow to appear on multi-lines when not focused. (8af85fd)
  • wasm: Fix initialization issue in PlatformHelper for netstandard2.0 (55cddba)
  • WebView: Raise NavigationStarting and NavigationCompleted when doing anchor navigation on iOS. (f569465)
  • Initializing implementation (984076a)
  • Removed unneeded items from project file (22b19e7)
  • Update src/Uno.UI/ts/Guid.ts (b26efef)

BREAKING CHANGES

  • fix(droid)!: CommandBar.Foreground affecting NavigationCommand icon (51795d2)

This will change the default behaviour on how the Foreground property of the CommandBar is handled and applied against the different elements of the CommandBar

uno - 3.5.1

Published by jeromelaban over 3 years ago

Staying true to our #WinUIEverywhere mission, our 3.5 release provides day-zero support for WinUI 3 Preview 4 and it brings support for 4 new WinUI controls – Navigation View, Progress Ring, Pager and Expander. In addition, we are solidifying our existing support for SkiaSharp and Xamarin.Forms 5.

Read our blog post for more details about this release.

Features

  • Automation: Implement properties used by PagerControl eed4842
  • ContactPicker: Pick multiple contacts e9c120a
  • ContactPicker: Pick single contact on Android be03a46
  • ContactPicker: Pick single contact on Tizen 2e32116
  • ContactPicker: Pick single contact on WASM 9f0679e
  • ProgressRing: Add DeterminateSource/IndeterminateSource to MUXC ProgressRing 302fd4b
  • TextBox: Add keyboard command capability to macOS TextBox 1effa70
  • TransformToVisual: Add TransformToVisual logic for macOS 0ab5d6f
  • xLoad: Add xLoad binding capabilities e2868b0
  • Add Sample for CommandBar Custom BackButton 48bff73
  • Add support for Determinate ProgressRing eaa4e51
  • Add support for x:Bind type cast syntax c45407f
  • Add unoapp-uitest template for Uno.UITest based testing 0a67156
  • Add VectorExtensions bfdd3df
  • Add VectorExtensions API documentation 17af317
  • DataTransferManager support on Android 4c2e6dd
  • DataTransferManager support on iOS bfe6ec9
  • DataTransferManager support on macOS 09b4ad0
  • DataTransferManager support on Tizen 41d8fc0
  • Enable WebView on macOS dc0363c
  • Implement Vector Extensions d2b455f
  • Support for CompositionPropertySet 8250339
  • Support for DataPackagePropertySet 91fee77
  • Support for DataPackagePropertySetView 8d2dabf
  • Support for DataTransferManager on WASM 97ccc3f
  • Support for UIElement.ActualSize a6b9cbe
  • Support PropertyValue API 13fdf50
  • Update extension namespace 51e3261
  • update resource name b9874a0
  • WinUI PagerControl 76cdc72
  • Binding: PropertyChanged update with null 1dcca11
  • Border: Allow variable BorderThickness while using CornerRadius 54f82cc
  • droid: Added validation for NODPI Assets 67e3a99
  • Expander: Add WinUI test page 1279af8
  • Expander: Port Expander from WinUI 0e5632b
  • iOS: Set latest (iOS14+) Style default for TimePicker ae78b77
  • skia: Enable StorageFile.GetFileFromApplicationUri f910b24
  • Slider: Add Header support 6fbc207

Bug Fixes

  • Update UnitTest c0530da
  • UWP buildable and deployable under Any CPU 3a9a3b7
  • templates: Updated Microsoft.NETCore.UniversalWindowsPlatform to 6.2.11 7084575
  • skia: Use PackageInstalledLocation for the path c801466
  • iOS: Add CommandBar Sample 66e661b
  • iOS: Add CommandBar UITest 1f0ea0c
  • Update Sample Page f0b3e80
  • Update src/SamplesApp/SamplesApp.Droid/SamplesApp.Droid.csproj b434c2a
  • Update src/SamplesApp/SamplesApp.Droid/SamplesApp.Droid.csproj a0d4742
  • Update src/SamplesApp/SamplesApp.Droid/SamplesApp.Droid.csproj bebb51c
  • Update UITest to set the Style only during its execution 3a4f524
  • Update CommandBar UITests 41ff3fe
  • viewbox: .Arrange() on a viewbox will now reuse the Scale transform instead of creating a new one each time. 25153ba
  • Bump UWP min version to 10.0.18362.0 b481b23
  • ElevatedView does not show up on Skia 93ae29c
  • Properly fallback on Skia AcrylicBrush 7451979
  • android_textalign: Fix text alignment problem on Android. 8ceed71
  • Animations: Fix issue with multiple animators holding the same handle to their JS counterparts ee4efaa
  • BindableNSView: Set MasksToBounds to false on init 697ee67
  • Bindings: Avoid propagating DataContext if you are not the child's parent f95d051
  • Border: [Skia] Ensure only the outer border shape is inserted as the first child 0d95444
  • ci: Skia GTK/WPF/Tizen templates weren't tested in Release cb52022
  • combobox: [WASM] Reduce number of items created by ComboBox 1b23964
  • FrameworkElement: [macOS] Ensure we set parent to a DependencyObject 81bb0b3
  • imagesource: Fix the SetSource[Async] must clone the provided stream before returning 4b9a6ec
  • iOS: CommandBar Back Button Icon 5dcae11
  • itemsreapeter: Workaround only first item rendered if no ScrollViewer bd3265a
  • itemsrepeater: Fix only first item appears on Android 8534de5
  • linux: Package base path resolution for single-file .NET 5 packaging 9e62bc3
  • memory: [iOS] Propagate GPU animation failures up to Storyboard to fix memory leak 9a8eb39
  • msix: Adjust project creation ordering fec66d2
  • navview: Fix footer items not appearing f029e37
  • PersonPicture: Use SymbolThemeFontFamily instead of Segoe MDL2 Assets e0688e3
  • reg: Avoid common namespace name conflict e9acc20
  • Fix bounce ease producing invalid final value 6d840ab
  • Hyperlink: Add hyperlink foreground color for macOS 94a1e26
  • macos_scrollviewer: Margin directly on the child element of a scrollviewer were ignored. 4baad67
  • popup: [iOS] Nested popup results in NRE 004abee
  • popup: placement issue for android 531456e
  • rect: Allow the usage of spaces for components of a Rect (used in a ) bf1fb69
  • scrollviewer: [iOS] Ensure ScrollViewer.ViewportWidth is updated correctly 9bcd9d8
  • scrollviewer: Add ShouldFallBackToNativeScrollBars flag 6964f22
  • scrollviewer: Fix ScrollViewer.ViewportWidth calculation e87a198
  • scrollviewer: Show ScrollBar when Fluent styles are used 726923a
  • tabview: Fix content of first tab not rendered on iOS 6127a5d
  • tabview: Fix ScrollViewer-related issues fe8b659
  • TabView: ItemFromContainer should be public 09b302b
  • uielement: [iOS] Fix TransformToVisual output inside ScrollViewer ade31cb
  • vsix: Adjust UWP asset casing fb90c7c
  • wasm: fix non-uno.ui type HtmlElementAttribute inheritance 2518b14
  • Add missing UI Testing property in source generation 8f69eb4
  • ContainerFromIndex and IndexFromContainer return wrong results b3b27b7
  • Do not allow reentrancy on UpdateLayout even with native layouting 7f11604
  • Ensure protocol activation is handled 5ab623d, closes #5076
  • Error CS0105 The using directive for 'Windows.UI.Xaml.Controls' appeared previously in this namespace Uno.UI (xamarinmac20) 0928d9c
  • Fix build 6493ec6
  • Fix possible non disposed tracing. 2bd607b
  • Fix UpdateLayout measuring to 0x0 if called too early 2b95148
  • Invalid value 270bf34
  • Make sure parent's shadow children collection is up-to-date in child.Loaded 218f660
  • Match ProtocolActivated property support with Launch b87dc94
  • Native-registered DPs lazy initialization 6e4de7d
  • Prevent reentrancy of UpdateLayout with native layouting on xamarin a3fd5d3
  • Set IsVisualTreeRoot flag on all platforms ce2641d
  • Shapes: Match UWP StrokeThickness behaviour 63da357
  • viewbox: Fixed viewbox layout & clipping with the right solution after PR review. 9de4e14
  • viewbox: The coordinate system used for arranging elements were not the right now. It was before the application of render transforms. 071f1aa
  • Control Template might never be applied 0320068
  • Revert "Keep track of current view type even if content is set to null" 882662a
  • Show NumberBox header 0833e13
  • animations: [iOS] Cancel animators on detached layers 7f6b7c2
  • Binding: x:Bind to fields not applied 875a722
  • Border: Ensure Border content is clipped by CornerRadius 8e90750
  • Calendar: Fix Calendar.YearAsString() and Calendar.YearAsTruncatedString() 4a31447
  • DependencyObject: Fix invalid cast in generated DependencyProperty coerce d6de227
  • dotnetnew: Add dotnet-new classification to dotnet new templates 23f8ebb
  • droid: Resource converter from UWP b352ab6
  • iOS: CommandBar back button title 5e9cf9f
  • iOS: Timepicker flyout 6223238
  • listview: [WASM [Skia] Trim excess scroll when item at end of list is removed 3587774
  • macos: ManipulationDelta translateY being inverted 03d13f5
  • NavigationView: Content top padding is not correct 444aa14, closes #4793 #4826
  • passwordbox: Don't fail on setting null on PasswordBox.Password 080cf81
  • personpicture: Fix invalid image positioning after ImageBrush fixes e9de176
  • Polygon: Close Polygon shape on Android 056d8a9
  • popup: placement issue for wasm/skia 6bc5b92
  • reg: Adjust RuntimeTest for leaks validation condition for iOS f591e5d
  • remotecontrol: Fix iOS/Android projects not selected for RemoteControl generator e84b047
  • resourcedictionary: Fix ResourceDictionary.Source resolution when globbed includes are defined in an included file b1d4741
  • ResourceDictionary: Default theme may not be valid on first call 47b6aed
  • scrollviewer: [WASM] Fix reloaded ScrollViewer has scroll reset 387038a
  • tabview: Fix TabView add button not appearing when there are many tabs f176465
  • textblock: On Wasm, the Padding were not part of the key used for the measurement caching. 32b27b1
  • Added missing Properties folder and AssemblyInfo.cs file to macOS template f98546f
  • Adjust When_Scrolled_To_End_And_Last_Item_Removed test assert 8879083
  • Avoid generating duplicate TabViewItems 9c35539, closes #4899 #4907 #4925
  • ElementName binding in non-toplevel ResourceDictionary 086a99c
  • fixed race condition 86dccb2
  • Indicate selected item in NavigationView f17770d, closes #4794
  • IsMethodPresent not using NotImplemented 881bb0b
  • Make NavigationView Settings item selectable 69318b4, closes #4809 #4689
  • memory leak in telemetry 619fe29
  • Remove explicit type in Solution template App.xaml.cs 26170c3
  • Return correct result of ApiInformation.IsPropertyPresent 0e5c530
  • TabView does not render item content with bindings 20b4af1, closes #4894
  • TargetPropertyPath is not releasing its WeakReference properly 35d6a93
  • tabview: Fix all tabs squeezed into view when last tab is closed 0d8f915
  • tabview: Fix TabViewItem min width not applied when XamlControlResources is merged 91c41a4
  • templates: Bump Uno.Core to 2.1 in UWP template 62fb9a1
  • textblock_alignment: Fixed a problem with TextBlock alignment on Wasm when "MaxLines" were used. 55cc99b
  • TextBox: [iOS] Remove the top margin of the MultilineTextBox 73f8257
  • TimePicker: Make Sure ClockIdentifier is set on iOS 8ae94ba
  • Remove .Shared from root namespace b2a2906
  • TimePicker: Make sure iOS flyout opens fc7fd35
  • winui: Fix the WinUI desktop app template b71aa14
  • xaml: Fix ThemeResource binding in style template doesn't update b3f2078
uno - 3.4

Published by jeromelaban almost 4 years ago

This 3.4 release is about adding support for WinUI controls, such as the hierarchical NavigationView, InfoBar, RadioButtons, ItemsRepeater and determinate ProgressRing. We are following the footsteps of the WinUI team to align more of the controls Uno provides with what is supported on Windows.

The combination of controls we are releasing with 3.4 release, the recently-announced Infragistics controls for Uno Platform, and Syncfusion charting, will give you as a developer a great toolset to tackle single-source web, desktop and mobile applications.

As with each release, we have also added significant number of features and fixed many bugs, with the help of members from the community.

Visit our blog post for additional details.

Hierarchical NavigationView support (@MartinZikmund, @dr1rrb, @davidjohnoliver)

Uno Platform has been including a version of the Navigation for quite a while in the Windows.UI.Xaml namespace. Recently, the WinUI team added support for an enhanced experience including hierarchical navigation, with the ability to expand and collapse menu items.

This new control is now available in the Microsoft.UI.Xaml namespace, to match with the Windows version of WinUI. The Windows.UI.Xaml version of the control will stay in Uno, but will not include additional features, only bug fixes as needed.

You can browse the documentation for the NavigationView on Microsoft docs.

Support for the WinUI 2.5 InfoBar control (@MartinZikmund)

The WinUI InfoBar control also has been imported in Uno Platform. It allows for applications to display app wide status messages to the users to be highly visible but non-intrusive, using customizable severity levels.
Here is an example of InfoBar visual:

You can browse the documentation for the InfoBar on Microsoft docs.

Support for WinUI RadioButtons (@jeromelaban, @dr1rrb)

Yet another WinUI control, this time to allow the DataBinding of an items source to a list of RadioButtons, this control lets users select one option from a collection of two or more mutually exclusive, but related, options.

You can browse the documentation for the RadioButtons on Microsoft docs.

Support for ItemsRepeater (@dr1rrb)

The ItemsRepeater is a new control from WinUI 2.x that provides an enhanced developer experience and end user experience when creating custom collection experiences using a flexible layout system, custom views, and virtualization.
We have ported the code from the ItemsRepeater to Uno, and it is useable on all our available platforms. It is used in Uno by the refreshed hierarchical NavigationView control, as well as the RadioButtons control.
Layouts are reusable components for which some (StaggeredLayout, WrapLayout) were released in Windows Community 6.1. Uno did not have support for the ItemsRepeater at the time, but those will be available soon to be reused in Uno.

You can browse the documentation for the ItemsRepeater on Microsoft docs.

Determinate ProgressRing (@kazo0)

WinUI 2.5 added support for a determinate mode for the progress ring, allowing for an arbitrary progress value to be provided. This control uses Lottie under the hood, and benefits from additional changes we included to get color changes in Lottie files.

You can browse the documentation for the ProgressRing control on Microsoft docs.

Upgrading from previous versions of Uno

There are no breaking changes for this release of Uno, but you'll need to upgrade the Uno.Core package to 2.1 in the UWP project to avoid nuget restore warnings.

This upgrade has been introduced to improve the compatibility of Uno.UI with Visual Studio 2019 16.9 Previews.

Other significant updates

  • Support for FileSavePicker on macOS (Thanks @snickler !)
  • Drag and Drop support for ListView (WebAssembly and Skia) (@dr1rrb)
  • Improved ImageBrush support (WebAssembly) (@carldebilly)
  • Support for SvgImageSource (WebAssembly) (@carldebilly)
  • TabView for iOS/Android/macOS (@MartinZikmund)
  • Memory and execution performance improvements (@jeromelaban)
  • Skia templates use .NET 5 by default (@jeromelaban)
  • Support for FlyoutPlacementModes (@davidjohnoliver)
  • Support for FrameworkElement.EffectiveViewportChanged event (@dr1rrb)
  • Support for Frame.SourcePageType and Frame.CurrentSourcePageType (@MartinZikmund)
  • Support for synchronized ItemsControl.Items with ItemSource (@MartinZikmund)
  • Custom colors support for Lottie files and MUX ProgressRing (@carldebilly)

You can view below the full changelog of this release

Features

  • Add a property to launch the debugger for XAML generation f347548
  • Add Load/Unload benchmark ba19901
  • Hierarchical NavigationView 3e85994
  • Improve reference checking memory leaks runtime tests 56245e6
  • Update the Skia template to use .NET 5.0 1cbf17a
  • WinUI RadioButtons e48de38
  • dragdrop: Add ability to raise a routed event only for a portion of the tree e183f1e
  • dragdrop: Add re-order support in ListView (managed only for now, i.e. wasm + skia) b79f6d8
  • dragdrop: Fix the drag and drop hit testing c2003d4
  • dragdrop: Import the ListView D&D event from generated code c43f6d6
  • dragdrop: Initial D&D events support on ListView aaf4309
  • effectiveviewport: Add support of the FrameworkElement.EffectiveViewportChanged event 4fbdee5
  • effectiveviewport: Add support on WASM d66c074
  • effectiveviewport: Enable mixins on iOS and fix csproj references d2861ff
  • effectiveviewport: Fix invalid parent viewport to local coordinate computation (was not inversed) 649c84e
  • effectiveviewport: Make sure to raise the UIElement.EffectiveViewportChanged on Arrange on Skia 3c896e5
  • effectiveviewport: Make the WASM layouting algorithm use the new LayoutInformation a0e8a13
  • effectiveviewport: Move the UIElement's layout properties to the LayoutInformation e98a417
  • effectiveviewport: On skia scrolling is now managed by the SCP and is backed by Visual.AnchorOffset instead of a RenderTransform c8ba949
  • effectiveviewport: Reuse the EffectiveViewport code for IFwElt 124c6d3
  • flyout: Implement EdgeAligned FlyoutPlacementModes 0941866
  • Frame: Support for SourcePageType and CurrentSourcePageType 650ea9b
  • imagebrush: Improved the support of ImageBrush on Wasm af15d91
  • iOS: Add DatePicker FeatureFlag 4966060
  • iOS: Add support for iOS 14 Picker style 9398d1b
  • iOS: Add TimePicker Feature Flag c332a25
  • iOS: Enabled feature to be toggled from resources 8f46629
  • iOS: Move OS version specific code 9171f2e
  • itemscontrol: Sync Items with ItemsSource 26cf7ab
  • itemsrepeater: [iOS] Enable clipping on the ScrollViewer 6a05d31
  • itemsrepeater: Add some missing classes 77dbf85
  • itemsrepeater: Brings more C++ code and begin integration with Uno 69bd34e
  • itemsrepeater: Do not throw exception for ScrollViewer.CurrentAnchor (always return null) 0cfbe74
  • itemsrepeater: First buildable version 🎉 8ea49c5
  • itemsrepeater: First item visible cd5c57d
  • itemsrepeater: Fix rebase issues 67b3a3c
  • itemsrepeater: Fix tracing 08b57ff
  • itemsrepeater: Initial import 357a7cc
  • itemsrepeater: Make the ItemRepeater available on netstandard 2.0 ec7f73c
  • itemsrepeater: Move files to their final place 9f79508
  • lottie: Added the ability of LottieVisualSource to download its content and assign it locally. b96d123
  • lottie: First implementation of theme properties for lottie files (custom colors) c31c32e
  • svg: Added support for SvgImageSource on Wasm 26c0b06
  • svg: Fixed for right signature of SvgImageSource.SetSourceAsync() with correct async result 1523a0d
  • themable_lottie: Renamed new classes using better names 620ea99
  • Implemented FileSavePicker on MacOS cfecbe8
  • Implemented FileSavePicker on MacOS a7b8e80
  • ItemsSource-bound ItemCollection 2b4d4aa
  • Naive implementation of UIElement.UpdateLayout af4370f
  • Set TImePicker default style to use legacy 38847a6
  • skia: Implement CompositionTarget.Rendering event 9b19af3

Performance Improvements

  • NativeFramePresenter: [Android] Don't detach pages in the backstack 7253faf
  • [Wasm] Improve DOM routed events dispatch performance f90906d
  • Improve the performance by creating temporary hard references in DependencyObjectStore 804e441

Bug Fixes

  • contentcontrol: [macOS/iOS] Support binding DataContext in ContentTemplate c72c24e
  • dragdrop: Add missing file for ListView drag and drop support 2252868
  • dragdrop: Avoid double subscription (since ClearItem not always invoked) + make sure to subscribe event on CanDragItems change 9b135ac
  • dragdrop: Don't use the Move on ObservableCollection in reorder (avoid reflection and acts like UWP) + Other mix PR review 95b3438
  • dragdrop: Fix iOS compilation issues d23b51a
  • dragdrop: Fix NET461 build 353ba00
  • dragdrop: Fix possible null ref in Drag and Drop aa9c8b4
  • dragdrop: Fix selection lost when reodering items fc475d3
  • dragdrop: Fix support of TabView reordering 6157b15
  • effectiveviewport: Fix build macOS 1aff65c
  • effectiveviewport: Fix effective viewport computation when not top/left aligned 42c8f2d
  • effectiveviewport: Fix iOS not computing properly viewport when not top/left aligned 16792f7
  • effectiveviewport: Fix LayoutSlot always being at 0,0 on iOS 3f04ec7
  • effectiveviewport: Fix tracing compilation issues 2048452
  • effectiveviewport: NativeScrollContentPresenter are not intiilaized (do not register for effective viewport propagation) 6c74c32
  • events: Fix XAML event registration in DataTemplate 4d8709e
  • flyout: [WASM/Skia] Place Flyout correctly when attached to TextBlock 59035b4
  • flyout: Use fallback positions correctly aa0366b
  • imagesource: Fixed a regression on BitmapSource when using SetStreamAsync() 79e750c
  • iOS: [Commandbar] SetNavigationBar throwing exception when null 2340480
  • ItemsRepeater: Remove Assert for non-virtualizing layouts f512cb7
  • leak: Alter TargetPropertyPath and ElementNameSubject ade644a
  • leak: Ensure that ItemCollection is unregistering from ItemSource 2058063
  • leak: Memory leak caused by FrameworkTemplate owner reference propagation d3eb2c9
  • Leak: iOS Popup is leaking through the popup panel fdf821e
  • lottie_android: Reverted to Newtonsoft.Json on Android because of a crash in Com.Airbnb.Android.Lottie 4ca1fd5
  • lottie_wasm: Fixed a regression in Lottie support for Wasm -> a generated javascript code was invalid. 6568429
  • pointers: Fix handled tapped event are being re-interpretted by parent 7c8f9de
  • ScrollViewer: Add missing ScrollViewer resources 75a74db
  • [iOS][macOS] SamplesApp should include UNO_HAS_UIELEMENT_IMPLICIT_PINNING ff947ff
  • Keep track of current view type even if content is set to null 1850e89
  • Missing mime type for icudt.dat for .NET5 support 9ffc959
  • SamplesApp runner should unset the DataContext to release registrations b71462d
  • listview: Fix bad state when manipulating ListView.Items a3113f2
  • SyncGenerator: Properly convert INotifyPropertyChanged b8942dd
  • Use ObservableCollection instead on List when needed 3bf9d68
  • listview: [iOS] Take padding into account for item breadth 9c5170b
  • listview: Don't use recycled container for IsOwnContainer items 4cbecf8
  • selector: Support setting SelectedValue when SelectedValuePath is set 31ed853
  • TabView: Surface container-related methods 05b42b6
  • wasm_customevent: Fixed regression after refactoring of PR https://github.com/unoplatform/uno/issues/4650 1eca2da
  • xBind: Invalid xBind initialization on controls without code-behind base class 3a67db4
  • Add proper encoding to lt/gt characters in PackageDiffIgnore 7e95c85
  • Added FileTypeChoices setter to PackageDiffIgnore f64fd65
  • Adjust non-FrameworkElement support for top-level properties generation 7398dc9
  • FileTypeChoices prop to use a private setter 3a381c5
  • xaml: Ensure reference equality of x:Name resource by different access methods efcda72
  • Adjust Nuget override for Uno.Foundation.Runtime.WebAssembly da2f7c1
  • Apply workaround for https://github.com/dotnet/runtime/issues/45078 ede6542
  • wasm: Invalid deserialization in registerPointerEventsOnView 660df52
  • [Wasm] Adjust assembly loading for .NET 5 58400e5
  • Add missing slash character in namespaces declarations referring to Uno URIs 8fa795b
  • Fix compilation 42a77a2
  • Fix invalid LayoutSlot caching on .net 47f16b0
  • Fix keyboard support on skia which raises an exception for unkown keys on WPF 888f84d
  • FIxed potential concurrency issue with image subscription to payload. 8192bde
  • Remove HasThreadAccessOverride from public shared contract 6e24c4c
  • Use NSFileManager for proper folder paths 779a1f2
  • Flyout: WASM - Fixed build failing when attempting to create a flyout containing a control using a themeresource 1d56759
  • itemrepeater: CI fixes e2bcb53
  • itemsreapeater: Not virtualizing + ci issue 2ff75c5
  • itemsrepeater: Avoid layout cycling 1d4726a
  • itemsrepeater: Build 13a624e
  • itemsrepeater: Disable MUX runtime tests on UAP + fix namespace conflict 1074ee4
  • itemsrepeater: Do not clear the ClippedFrame until next layout pass 0991018
  • itemsrepeater: Fix invalid insert (broke the backward generation) 049ee5e
  • itemsrepeater: Fix minor issue with c++ 2 cs 61ae212
  • itemsrepeater: Fix rebase issues a600994
  • OrientationSensor: fixed orientation sensor not working properly with android versions older than oreo e48c60a
  • pointers: Make sure to clear the pressed state of pressed original source 49e9cc4
  • wasm_image: Added a way for the HTML to report when are loaded or on error. 4b084aa
  • Adjust Uno.Skia package name for WinUI a845112
  • TimePicker LightDismissOverlayBackgroundProperty 38246fa
  • ViewHelper.Android not considering IgnoreTextScaleFactor at runtime 7bc5961
  • itemsrepeater: Few more adjustements b2742ed
  • itemsrepeater: Fix build 6fbe5dc
  • itemsrepeater: Fix iOS support 96b7c7a
  • itemsrepeater: Fix method visibility 67ed183
  • itemsrepeater: Fix RELEASE build ad4906d
  • itemsrepeater: Minors fixes for CI build 7110cd4
  • itemsrepeater: Misc fixes 172a3df
  • itemsrepeater: Misc fixes for tests 6cab0b9
  • winui: Adjust WebAssembly support for WinUI 3 dotnet new template 6cc152a
  • winui: Adjust WebAssembly support for WinUI 3 dotnet new template a132e76
  • wizard: UWP project is not set as startup by default f55b36b
  • xaml: Resolve markup extensions in Xaml correctly 667fdee
  • xLoad: Fix invalid generated code when x:Load, StaticResources and Visibility are used aac07fe
  • BindingExpression will now apply the FallbackValue when a Converter returns DependencyProperty.UnsetValue. 3a9b164
  • CoreDispatcher.RunAsync with CT (internal) was throwing when invoked from BG thread 1a9b851
  • Dispatcher.HasThreadAccess always return true on Skia 9a8e99c
  • Do not re-invoke the IFwEltHelper.Initialize in Panel's ctor dc3a83b
  • Misc fixes for the ItemsRepeater runtime tests 7fb34e4
  • Re-added setter to FileTypeChoices 88114f5
uno - 3.3.0

Published by jeromelaban almost 4 years ago

WinUI 3.0 Preview 3 is a big step towards shipping the final version of WinUI.

We at Uno Platform team are happy to report that Uno Platform already works with the latest WinUI preview. Our sincerest thanks to WinUI team who keeps us posted on their progress and allows us to make modifications to Uno so that our joint developer base can use the latest and greatest bits right away.

In addition to shipping support for Preview 3 the team also managed to ship additional features in our 7th release in 2020.

WinUI 3 Preview 3 support

We’re aligning the API surface from WinUI 3.0 Previews in Uno, alongside adding support for the WinUI Desktop project template. The Desktop template enables WinUI applications to use the full Win32 and WinRT API with .NET 5, without running in the UWP sandbox.

To create an application using the WinUI 3 API set, run the following command:

dotnet new -i Uno.ProjectTemplates.Dotnet
dotnet new unoapp-winui -o MyApp

This will create a brand-new project to experiment with WinUI 3 Preview 3 and Uno.

You can find up-to-date information about dotnet new templates in our documentation.

A few points about the WinUI 3 Preview support:

  • Debugging and running the Windows Desktop project must be done using the “MyProject.Windows.Package” project, not the “MyProject.Windows.Desktop” package (you will experience Startup exceptions otherwise).
  • The WinUI+UWP project created by the template does not yet support .NET 5, but supports C# 8.0 and .NET Standard 2.0 libraries.
  • In order to run the WinUI 3 Windows Desktop and UWP heads, it's best to install Visual Studio 2019 16.9 Preview 1. For the other platforms, you can choose recent stable builds of Visual Studio 2019.

Android 11 and iOS 14 Support

Uno is now providing Android 11 support and deprecates the use of Android 9, which Google stopped supporting as of November 1st.
If your application was targeting the API level 28 (Android 9), you can upgrade to Android 10 (Level 29) or 11 (Level 30) in your application’s property pages.

Support for KeyUp and KeyDown Skia backends

Keyboard was a big ask from the community, and the first consumer of this feature is the Uno Calculator for Linux. We’ve updated the Snapped application to enable keyboard support to input numbers and operators.

Get it from the Snap Store

We've also updated our appimage support for the Linux Calculator, in case you're on a distribution that does not support snap, or snap is not installed.

How to Upgrade

To upgrade to latest release of Uno Platform please update your packages to 3.3 via your Visual Studio NuGet package manager! If you are new to Uno Platform, the best way to get started is following our official getting started guide.

Here's the full changelog:

Features

  • Add template support for WinUI Desktop (063f98e6937e83392af56cba231b81857255cc80)
  • skia: [GTK][WPF][Tizen] Add CoreWindow.[KeyUp|KeyDown] and UIElement.[KeyUP|KeyDown] (0e89271)
  • Add resources files with string translations (3dc5cd4)
  • Add resources Keys (3649f52)
  • Localize Drag and Drop Caption text (cda1afb)
  • Move Drag n Drop files into directory (34f74fe)
  • android: Add support for Android 11, remove Android 9 support (f7774e6)
  • DatePicker: Enable date part hiding on button (efca12c)
  • DatePicker: Support Header properties (7fea081)
  • NumberBox: Header and HeaderTemplate support (6e14000)
  • TimePicker: Support for Header properties (5bf73e9)
  • Add Platforms folder in VSIX template (2779561)
  • MapStyle and MapInputEventArgs (a833c95)
  • Support for WinUI InfoBar control (601e9a4)
  • Tizen project template (6d46e18)

BREAKING CHANGES

  • Using the MapControl implementation provided by Uno.UI.Maps requires the MapResources resource dictionary to be included in application resources:
<Application.Resources>
	<MapResources xmlns="using:Uno.UI.Maps"/>
</Application.Resources>

This resource dictionary provides the required MapControl style.

  • android: The support for Android 9 is being removed, as the Play Store does not accept updates for applications using this version.

Performance Improvements

  • fastconvert: Replace the switch by a calculation for 1-digit string conversion. (87832b0)
  • tests: Improved perf of UI tests by reducing multiple decoding of same images (c0c391b)

Bug Fixes

  • auto_size: Add support for "Auto" and "Infinity" in float & double converter for DependencyProperty bindings. (58bd5f5)
  • combobox: Set alignment on ComboBox PopupBorder (71ec888)
  • dotnetnew: Adjust templates content for VS integration (55a41ff)
  • elevatedview: UpdateElevation timing issue (df3b6e5)
  • keyboard: [Gtk] Add missing operators mapping (5a08089)
  • listview: [iOS] Fix outer ElementName bindings not available on reload (4cf28e4)
  • listview: [WASM] [Skia] [macOS] Improve ListView measurement (b0b2733)
  • mapcontrol: [iOS] [Android] Fix MapControl for Uno 3.0 (60792e4)
  • maps: [Android] Update Uno.UI.Maps to latest Google Play Services package (0fa1833)
  • Adjust visibility of Skia extensions (3d625cd)
  • Textblock can be constrained by maxlines on wasm and android (0c33868)
  • textblock: Fixed Android measure bug https://github.com/unoplatform/uno/issues/4414 (11ddb61)
  • XamlFileGenerator: XAML markup extension requires full name #2918 (488a556)
  • BindingExpression failed to apply string explicit source. (94b6bc9)
  • UIElementCollection adding the view twice (52fa4e5)
  • fix(mapcontrol)!: Using MapControl now requires including MapResources (373bf93)
  • generation: Fixes invalid Tuples expansion using Roslyn 3.5 and later (c7bebb2f517c704b24e0e722f117d6e6ef578ce9)
uno - 3.2.0

Published by jeromelaban almost 4 years ago

The 3.2 release is loaded with feature and performance improvements. Most of the release focused on upcoming .NET 5 and all benefits Uno Platform gets from building on top of it. However, we are also releasing improvements to the controls and tooling we introduced in previous releases.

Adding preview support for .NET 5 for WebAssembly

The .NET team has been working hard to add WebAssembly support for .NET 5, and we’ve been able to leverage this work to update Uno and provide a preview of this support.

This update gives the ability for Uno Platform apps to use the .NET 5 APIs and features, like C# 9.0 and its source generators, records, pattern matching and others interesting features.

But that’s not all! The .NET 5 WebAssembly support comes with the IL interpreter runtime, but also brings the AOT support that was already present in the Mono Runtime that Uno Platform currently uses, allowing Uno WASM implementation a performance boost of 7-15x compared to the IL interpreter.

To get this support, the Uno WebAssembly Bootstrapper has been updated to include the AOT runtime for .NET 5, while keeping the support for the Mono 6.x WebAssembly support (using the netstandard2.0 target framework for projects).

You can view additional benchmarks on our blog post.

Drag and Drop support (multiple platforms)

Drag and drop elements within the application is now supported. Like UWP, any element flagged with the CanDrag property set now has the ability to build a DataPackage and customize the UI for the drag operation. Any element configured with the AllowDrop flag can now receive the drag events.

We’ve also added the ability to drag and drop from and to other apps for Skia for Windows and macOS (Thanks @robloo!).

Playground Updates

We’ve updated the Uno playground with new samples for you to experiment with:

You can now use the muxc” namespace to access Microsoft.UI.Xaml.Control enabled controls.

Other notable features of Uno Platform 3.2

  • We've updated the Uno Platform Visual Studio 2019 Wizard to include a list common issues found when starting a project.
  • AnalyticsInfo, PackageId (Skia/Wasm)
  • StorageFolder: GetFilesAsync(), GetFoldersAsync(), GetItemsAsync() (Thanks @pkar70!)
  • UISettings GetColorValue and AnimationsEnabled (Thanks @MartinZikmund!)
  • Drag and Drop support (multiple platforms)
  • Support for Windows.Storage.PathIO and many Windows.Storage APIs
  • VibrationDevice support (Thanks @MartinZikmund!)
  • Support for UIElement.XamlRoot (Thanks @MartinZikmund!)
  • XAML Source generation improvements, base support for C# 9.0 generation
  • Fixes for multiline TextBox for WebAssembly

You'll find below the full changelog:

Features

  • [Wasm] Adjust netcore compatiblity 59667ea
  • Add CommandBar SampleControl with Navigation 6c8a61c
  • Add NavigationViewPaneDisplayMode enum 557bcc2
  • Add SelectionMode enum 453c7b6
  • AnalyticsInfo support for Skia (Tizen) ba9356c
  • AnalyticsInfo support for WASM 8b7b97d
  • Appointment (Calendar) common structs f18ee9e
  • GeoFencing - supporting classes/enums 3361f74
  • Geolocation.PositionSource enum 251e937
  • Implement Application.RequiresPointerMode 23a656b
  • PackageId support for Skia, WASM, Tizen 4c8e611
  • StartStopEventWrapper be2b602
  • StorageFolder: GetFilesAsync(), GetFoldersAsync(), GetItemsAsync() e6348f8
  • Support for GuidHelper 7ec98fb
  • Support for UISettings.AnimationsEnabled on Android d78bebf
  • Support for UISettings.GetColorValue bdc1420
  • dragdrop: Add support for RandomAccessStream on BitmapSource 4f16eed
  • dragdrop: Abstract the drag event source so they can be built from another source than pointer c80db88
  • dragdrop: Add ability to ignore only a single element while bubbling event 5f90875
  • dragdrop: Add ability to override the default UI b3f7cb3
  • dragdrop: Add basic sample 6bb7b16
  • dragdrop: Add D&D overlay structure 13b2298
  • dragdrop: Add first implementation of the DragDropManager 8f4547f
  • dragdrop: Add support of Dragging event on the GestureRecognizer 97c476c
  • dragdrop: Enhance the DataPackage API 2b52694
  • dragdrop: Extract the hit testing algorithm ca0688e
  • dragdrop: Extract the HitTestability from the UIElement 030d466
  • dragdrop: Fix Android clipboard usage of DataPackage 238b331
  • dragdrop: Fix DataPackage on WASM 4ec12d1
  • dragdrop: Fix WASM compilation issues 4c5a78e
  • dragdrop: Fix WASM support of Drag and drop c4cb3a7
  • dragdrop: Implement basic UI fabb408
  • dragdrop: Implement UIElement.CanDrag and AllowDrop bbff5ab
  • dragdrop: Import needed XAML classes 418ebc1
  • dragdrop: Import the core drag and drop classes 756d278
  • dragdrop: Initial work for D&D manager f19dc57
  • dragdrop: Make sure to not allow drag operation if pointers does not have any pressed buttons 2faa713
  • dragdrop: Make the CoreDragDropManager implementation configurable 943f048
  • dragdrop: Primitive support of the drag in UIElement e9ef1cb
  • dragdrop: Wire up the Drag and Drop routed events 05830c0
  • dragdrop: Wire-up the UIElement.DragStarting event 0242a0e
  • Droid: Enabled TextBox.CharacterCasing a0d714c
  • iOS: Update method signature for null 7811661
  • TileNotification common struct 705eab8
  • dragdrop: Add missing support for DragStarting and DropCompeleted event handlers 3d81579
  • dragdrop: Add support for external drag and drop on skia 593d6d5
  • dragdrop: Complete support for external drop of all types from other apps/macOS 1680b51
  • dragdrop: Complete support for most drag and clipboard formats in macOS c6bfcd4
  • dragdrop: Fix macOS clipboard usage of DataPackage 91c9fec
  • dragdrop: Hit test and raise the Drag and Drop eventys in the UI 991e885
  • dragdrop: Hook into macOS native window drag/drop methods 80381ca
  • dragdrop: Initial support for drop from external macOS apps f594af3
  • dragdrop: Multi target the Window.RootElement property e853cf7
  • dragdrop: Show a dragging image in macOS 103d2cc
  • dragdrop: Update iOS clipboard usage of DataPackage 04feaca
  • drapdrop: Support for external file drop from macOS ce80450
  • PathIO: Support for Windows.Storage.PathIO API ae86107
  • PathIO: Support PathIO API 03b775b
  • perf: Improve performance of the ScrollViewer with managed ScrollBar by defering their load 08eacc5
  • pointers: Implement pointer capture on skia 7caf355
  • storage: Extract MIME type from extension resolution to a dedicated service 5da461a
  • Test: Add iOS Test for CommandBar navigation 4897a14
  • wasm: added a font-face override for Segoe to add some cross-platform font consistency fa344d1
  • Add support for C# 9.0 source generators 560e9b3
  • Add support Setter.Target in style declaration d8005d2
  • iOS: Add iOS only solution for Vs4M a5566b4
  • storage: [Perf] allow direct access to the file stream from FileIO when possible bc9540e
  • storage: Add a Buffer.DefaultCapacity e2c49f8
  • storage: Add basic implementation of the AsyncOperationWithProgress a774ad5
  • storage: Add support of streamed <In|Out|RA>Stream aecc0f1
  • storage: Add WinRT RA/In/Out Stream adapter to/from system Stream 2f720ca
  • storage: Code cleanup fb7505f
  • storage: Complete removal of direct file system access in FileIO f913d02
  • storage: Implement RandomAccessStreamReference ec732a5
  • storage: Implement the StreamedCustomDataLoader e6a63ae
  • storage: Implement WindowsRuntimeBufferExtensions 3e0fe98
  • storage: Import missing interfaces from generated code 922632a
  • storage: Make the RAStreamWithContentType a stream wrapper 789ae3f
  • storage: Refactor StorageFile to add support of streamed file (future commit) and File<In|Out|RA>Stream cd2b766
  • storage: Suffix Stream.<Read|Write> accepting buffer by Operation to clarify return type + add ability for stream wrapper to return null so wrapper can be dynamic 1b363e3
  • storage: Use Memory in buffer instead of byte[] 1080144
  • VibrationDevice: Support for Android 1800b95
  • VibrationDevice: Support for iOS 144520d
  • VibrationDevice: Support for macOS 1838e46
  • VibrationDevice: Support for WASM c244733
  • VibrationDevices: Support for Tizen 2a9bca0
  • XamlRoot: Initial support for UIElement.XamlRoot 1cd99c5
  • ChatMessage - common structs 9452e65
  • Storage.Pickers.PickerLocationId cb6bec6

Performance Improvements

  • commandbar: Removed redundant DP lookups on Android Native CommandBar renderer 2b663b9
  • Adjust parallelism configuration 7ef00f8
  • Reduce lookups and symbol displayname comparisons 17e19f3
  • Remove Uno.CodeGen from SampleApp to improve build performance 4a0d9ed

Bug Fixes

  • changed order of calls in ContentDialog Hide complete handler to invoke the closed handler before the result is set, and modified UI test to change the text before deferral is completed. 88e62ff
  • android_elevatedview: Fixed clipping for ElevatedView when place in a ScrollViewer on Android. 8b8ff63
  • build: Fixed missing Generic.xaml as source for generated code. 5e27b29
  • clipping: Tooltip were not properly supporting rounded corners as UWP 40a5787
  • commandbar: Fixed height of CommandBar on iOS when using native template. fc67d09
  • commandbar: Removed potential memory leak 753616a
  • commandbarrenderer: Fix CommandBarRenderer Height for iOS 28cc1b6
  • contentdialog: [Android] Fix botom of full-size ContentDialog cut off 6c0ede3
  • contentdialog: Set default ContentDialog.DefaultButton to None 22e0227
  • contentdialog: Support full sizing, keyboard adjustment, other ContentDialog features 1b6eb6d
  • ContentDialog: Make ContentDialog.ShowAsync awaitable return result on Hide() call ced3508
  • cornerradius: Added overflow:hidden with corner radius is used. 6c9a708
  • cornerradius: Separate the update of CornerRadius from the Border itself 917b75a
  • dotnetnew: Skia WPF head is not referenced properly in sln 110448a
  • dragdrop: Apply styling code review 8e3c5c5
  • dragdrop: Correctly invoke the DraggingExited action in NSWindow 8866ccc
  • dragdrop: DataPackage defered was not propagating result 6fe8d58
  • dragdrop: Fix Android build 3578d1a
  • dragdrop: Fix CanDrag/AllowDrop inversed + attempt to fix the pointer released on skia 8440d96
  • dragdrop: Fix compilation on GTK and Tizen b2b49bf
  • dragdrop: Fix Drag and drop compilation of Unit tests 61e9ca4
  • dragdrop: Fix external D&D not cancel when leaving the window fc6f33a
  • dragdrop: Fix few buidl errors on CI 9271c1a
  • dragdrop: Fix invalid cast when retreiving files from DataPackage 6f18a77
  • dragdrop: Fix nullable for clipboard.wasm 664fb61
  • dragdrop: Fix nullable not supported on WinUI aba7751
  • dragdrop: Fix nullable ref for WinUI c37cd08
  • dragdrop: Raise the DragLeave event properly and fix pointer tracking captured 19894da
  • dragdrop: The Drag and Drop gesture with touches is not recognized properly 5aedd5e
  • dragdrop: The DragCompleted event is bubbling ceec30e
  • dragdrop: When drag source are nested, the top most drag operation is cancelled in favor of the parent's one d49a800
  • elevatedview: remove default background from ElevatedView 15dccc3
  • elevatedview: The shadow color was too intense on Wasm, compared to other platforms. 5913f5a
  • iOS: CommandBar updates on navigation #3017 af732b9, closes #3017
  • iOS: Nullable check f97545a
  • LinkerFailure: Add missing AndroidX.Activity reference to avoid linker failure when using Uno.UI.BaseActivity.OnRetainCustomNonConfigurationInstance 06cbfe0
  • Pivot: Remove TabView.TabItems setter, not part of public API. 527cff5
  • reg: Fix BindableType generator not detecting attributes after roslyn update d56d844
  • reg: Fix scroll offset was applied twice for hit testing on skia 59a6375
  • reg: Fix source generators override path 6144e24
  • reg: Fix UAP build should not include C# 9 source generators c33fc7e
  • scrolleviewer: Avoid to load change visibility of the scrollbar before it's being flagged as IsFixedOrientation b8962e3
  • scrollviewer: [Android] ScrollViewer shouldn't pass PointerMoved to parents 58bfcb0
  • scrollviewer: Avoid double scrollbars in multiline TextBox 449cdcb
  • scrollviewer: Fix double scrollbar when IsFixedOrientation is set bd1dc3d
  • scrollviewer: Was throwing exception when were absent from Control Template. Now simply behave as a ContentControl as UWP. 4013b29
  • Add null check for GetMethod in case of write-only property 0f00793
  • Add support for MediaPlaybackItem as MediaPlayerElement Source 4252c26
  • Do not force a visibility Visible on materialised element if materiazlization is not due to visibility change af4744d
  • scrollviewer: Fix invalid measure (scroll flickering) of TextBoxView when directly nested in ScrollViewer 73db47a
  • Do not throw exception on navigation after first page failed to load 2db67a7
  • scrollviewer: Fix wrong element 69d8156
  • scrollviewer: Make sure that Actual<Width|Height> is updated when ScrollViewer updates its "dimensions properties" 66d33bf
  • scrollviewer: Make sure that materailized scrollbar are using fixed orientation as soons as possible 257a12a
  • shapes: [Wasm] Fix invalid generation of Shapes caused by missing Wasm detection e97142d
  • shapes: Invalid shape positioning for 1px thickness f0f58c7
  • skia: Fix symbols font is not registered ae8d472
  • skia: FontFamily may return null and fail TextBlock rendering 158403a
  • webassembly: [WASM] remove UTF8 BOM for CSS fonts file 11336bb
  • XamlReader: Update invalid collection error message, validate TabView setter. cb92cb6
  • xbind: fixed code generation for x:bind to second-level method 3502972
  • ElementStub's Name is not set if visibility has been data bound f4bb7ac
  • Fix rebase issue 589897e
  • LongPath validation for build errors using generators 6a7fa57
  • ProgressRing: Fixes IsEnabled should not remove the progress ring ee6536d
  • reg: Fix incorrect reference of roslyn generators when LangVersion preview is not selected 16c0d91
  • Adjust roslyn override inclusion for legacy projects b65097e
  • Handle const fields in XAML code generation. DRY up some code ecc032d
  • Set PreferredDatePickerStyle on iOS 14 276f230
  • ios_commandbar: Fixed the regression about height of CommandBar on iOS 0033663, closes #2997
  • XamlGenerator compare symbols instead of names 86a9169
  • iOS: Remove warnings when building the iOS head 7ac08e5
  • storage: Ensure that the array return by the Buffer.GetSegment cannot be null 8784b73
  • storage: Explicitly create the temproary file directory (doesn't exists on WASM) d729828
  • storage: Fix AutoCommitStream not disposing the underlying WriteTransaction + copy the source file when creating the transaction for append b7d58b6
  • storage: Fix build iOS / ANdroid 47ed594
  • storage: Fix invalid inheritance in partial files of StorageFIle a154e0d
  • storage: Fix invalid refactor 9094f58
  • storage: Fix issues raised by unit tests 0d0d85e
  • storage: Fix test not passing for Buffer e46b17c
  • storage: Fix the FileShare for File<In|Out>Stream 09d2395
  • storage: Fix WinUI build 635714c
  • storage: Fix WiteableBitmap Buffer usage 4224570
  • storage: Make the AsyncOperation ID really unique c65e55e
  • xLoad: Adjust x:Load behavior to not require visibility binding d3600b9
uno - 3.1.6

Published by jeromelaban almost 4 years ago

The 3.1 release is our 6th release in 2020! In our 2019 survey you had asked to release more often and we hope we have delivered.

In year 2019, we had a total of 4 releases and in 2020 we are already up to 6. We also hope to have at least one more release by the end of the year!

The 3.1 release is special not only because of the new scenarios it unlocks, but also because of significant community contributions we are able to ship – thanks a lot to @robloo, @DanSiegel and @MartinZikmund for your contributions.

For this 3.1 release, we were able to add over 70 features and close over 140 code and documentation issues. Let’s unpack the release.

  • The first preview release of the Linux and Windows 7 support using a new Skia rendering backend. We’ve already started using it on the Uno Calculator, and it’s looking great!
  • The WinUI 2.x TabView and TreeView controls for Skia and WebAssembly, the other platforms are coming. (Thanks @MartinZikmund)
  • ScrollViewer XAML ScrollBars for WebAssembly and Skia
  • Improvements to the VSIX/dotnet new updates, such as new item templates in the VS, .vsconfig support to suggest VS features to install, and Skia Backend templates.
  • The support for StorageFile.GetFileFromApplicationUriAsync, to use large assets packaged with the application, something particularly useful in the WebAssembly context.
  • The WinUI ColorPicker support (iOS/Android) (Thanks @robloo)
  • WebAssembly support for Canvas.ZIndex
  • Support for x:Bind plain C# objects bindings, as well as Bindings.Update()
  • Windows.Globalization.Calendar updates, paving the way for Date and Time pickers
  • FolderPicker support for macOS (Thanks @MartinZikmund)
  • BadgeNotifications for Android and iOS (Thanks @MartinZikmund)
  • Page supports background brushes
  • Fixes for NavigationView navigation items binding
  • Voice over support for WebAssembly

And finally, the whole new Prism 8 templates updates for the dotnet new experience.

Here's the detailed change log for this release:

Features

  • dependecyproperty: New internal obj.GetValueForEachPrecedences(prop) for tests and diagnostics c6605d7
  • Droid: Enabled TextBox.CharacterCasing a0d714c
  • Add one-line method to set native frame navigation styles b228b16
  • Add welcome page for vsix, set UWP as startup project 8995335
  • Initialize property respecting platform spec 28640cc
  • PhoneCallHistory common structs d482bbb
  • TextBox add partial method 2e24ba8
  • ToastNotificationActivatedEventArgs structs for all 8838300
  • Updated default value to match UWP fdda6c5
  • PointerCursor: Support for WPF & GTK eed57c3
  • pointers: [Skia] Enable hit test caching (perf) 5da4d00
  • pointers: [Skia] Fix the stale branch detection while hit testing c1f9755
  • pointers: [Skia] Use the already existing bubbling algorithm for pointer 17c81a4
  • pointers: Add ability to aggregate intermediate elements while wlking the tree to compute the transform from an element to another one 3be13e4
  • pointers: Add element hit test cahcing 5bfae6c
  • pointers: Enable hit testing caching 2903573
  • pointers: Enable ScrollBars on Skia 7e5c387
  • pointers: First working implementation of managed event dispatch with valid OriginalSource detection c6aa81f
  • pointers: Remove broken hit test element caching c246b01
  • scrollviewer: Restore the managed ScrollBar in default ScrollVirwer template for WASM 7d0e40c
  • skia: Add support for netcore3.1/5 in Skia.WPF e2d4eb2
  • skia: Add support for WriteableBitmap 8da3a80
  • storage: [Android] Add support for GetFileFromApplicationUriAsync 55d300d
  • storage: [ios/macos] add support for StorageFile.GetFileFromApplicationUriAsync 80262f0
  • storage: [Wasm] Add support for GetFileFromApplicationUriAsync d3bc03a
  • vsix: Add ContentDialog, Resource, CustomControl and UserControl VS 2019 templates. c2ca533
  • vsix: Add support for .vsconfig file for dotnet new and vsix bf463fa
  • vsix: Include Skia targets fde903c
  • WASM: Enable A11y voice over capabilities 8b2dbc6
  • WASM: Set a11y properties all the time 2c126b4
  • WASM: Set both a11y attributes at once 978669f
  • WASM: update role finder method ec46a0e
  • wasm_zindex: Added support for Canvas.ZIndex to Wasm platform b857844
  • xf: Update X.F templates to use 4.8 release 9b05b58
  • Contact support struct/enums c48be37
  • CoreApplicationView.CoreWindow property 800ac7a
  • more fields in Geoposition (on Android) 81fbb8d
  • calendar: Update support for Calendar formatting and others f8cf74d
  • skia: Fix element not removed from the visual tree and Unloaded event never invoked 3f273fe
  • xbind: Add support for x:Bind to POCO, performance improvements. 2cb22f7
  • [Skia] Add CrossRuntime library support e67d672
  • Add CancellationToken propagation da5d8aa
  • Add HAS_UNO for non uap targets 6bbcaec
  • Add includeCurrent flag to FindFirstParent() e9f0c36
  • Add Skia (Gtk/Wpf) unoapp heads in dotnet new 0c6a958
  • Add support DataTemplate is container host 49c46f4
  • AppModel-Background-struct 87f2cc8
  • Finished implementation of TreeView class 80cc015
  • Finished TreeViewViewModel implementation f9cf8f8
  • FolderPicker on macOS ea28b8d
  • implementation of CalendarDatePickerDateChangedEventArgs 12aeca1
  • Implemented SelectedItemsVector and SelectedTreeNodeVector de9e4a3
  • Updated MUX package for UWP samples app ffb65fb
  • AutomationPeer: Add methods with default return values 9274560
  • BadgeNotification: iOS support 63811aa
  • BadgeNotification: macOS support 949608b
  • ColorPicker: Add ColorConversion, Hsv & Rgb structs 95a4bd1
  • ColorPicker: Add ColorPicker control including ColorPickerSlider 16fc608
  • ColorPicker: Add ColorSpectrum control bb2d504
  • droid: Add support for InvokeScriptAsync on WebView 9c494cb
  • iOS: Add support for InvokeScriptAsync on WebView 8c8fdb8
  • macOS: Update src/Uno.UI/UI/Xaml/Controls/ScrollContentPresenter/NativeScrollContentPresenter.macOS.cs 3415d38
  • NSUImageExtensions: added monochrome image recoloring for macOS 3d112d6
  • shared: change the winjs font for a new fluent style font cda7703
  • Symbol: Add missing symbols ce04184
  • Tizen: Initial target support 9ac9460
  • wasm: Added .ShowLocalVisualTree() for wasm platform 42b5c47
  • Throw appropriate exception when obtaining location without permission 92af4f2
  • TimeTrigger (struct) f605056
  • ToastNotification and NotificationMirroring definitions ab317b0
  • UserProfilePersonalizationSettings on Android 3634888

Bug Fixes

  • dependencypropertyprecedence: Changed the precedence override to use a stack instead of a single field. d7e0822
  • Droid: Remove multiple partial implementation 49f2ae5
  • iOS: Remove warnings when building the iOS head 7ac08e5
  • skia: Adjust visual clipping for ScrollViewer 6a3839b
  • style_precedences: First setter on a style were applying its value on the target using the "Local" precedence. 388b162
  • [iOS] [Android] Prevent Render() method from reentering 163128a
  • Handle NullExtension in XAML code generation 25a08ce
  • skia: Hide Visuals for zero arrange, reduce refresh load f8818db
  • [WASM] ContentPresenter.Background re-renders when Color changes 13f3aa2
  • Drawable error message made more clear 1f3c00f
  • Fully quality BindableMetadata generated types aad95fe
  • TextBox.VerticalContentAlignment 40fe514
  • combobox: [iOS] Fix memory leak c85f2a3
  • ContentDialog: [iOS] Fix memory leak 623c02d
  • fips: Use SHA256 for sourcegenerator path hashing c83223b
  • ListViewBase: Item container indices not updated on insert/remove 80ebd54
  • ListViewBase: Item container indices not updated on insert/remove ebdca5d
  • macOS: exception on Scrollview contentchanged 709b988
  • NativeApplication: don't call OnLaunched again if app is already running (i.e. when focus is regained) f3ba2b6
  • net5: Fix for net5 source generation nullable references support 671947f
  • publish: Fixes publish to azure may fail with locked files c02eae2
  • samples: Ensure the app can finish even in exceptional cases a769295
  • skia: Adjust error handling for skia samples run 675dcd4
  • skia: Fix content file deployment from VS d4eae5f
  • skia: Remove inner visual from panel on element removal 6bd6a03
  • skia: Remove NotImplemented on FrameworkElement.Dispose() 9c372eb
  • TemplatePool: Fix TemplatePooling may still be active when disabled 5e11ee0
  • test: [Wasm] Adjust WindowHelper.WaitForIdle to actually wait for idle c000291
  • TextBox: fixed multiline textbox height not scaling properly on wasm c586e09
  • Add documentation for add reference issue in cross targeted project ec998aa
  • Add workaround for intellisense issues in the Android project 155d124
  • Added MUX styles to run Samples on Windows 735ca30
  • Don't propagate DataContext via Border.Child 0dc34bd
  • Fix Slider thumb not visible when Value is at maximum b9d0083
  • move ListViewItem.cs to Controls folder ea379ce
  • Update Shape.Fill when LinearGradientBrush gradient stops change 947d2dd
  • analyzers: Analyzers may not show the proper status using the reference API c58565e
  • combobox: PlaceholderText not displaying c4c1109
  • doc: updating font doc is easier to read 37bcfef
  • NavigationView: toggle pane button width when light-dismissed 21b3bdc
  • shapes: [Skia] Adjust shapes path alignment given StrokeThickness a28763f
  • skia: GridView panel is now a WrapPanel 11c8636
  • skiawpf: mouse wheel was too fast f08631f
  • TextBox: [iOS] Fix memory leak cf7b2f0
  • theme: Ensure resources backed by StaticResource aliases update correctly 0d61ca9
  • theme: Update theme properties set by implicit styles correctly f42835f
  • tooltip: Fix tooltip popup panel created too early 3473a4d
  • Correctly initialize value of GeoCoordinate.Point on Android debca91
  • Fix bug where ResourceDictionary with only ThemeDictionaries would not be generated 6bb8694
  • ColorPicker: Add partial modifier to ColorChangedEventArgs 3dfc1ae
  • Materialize certain ResourceDictionary entries eagerly 44e1758
  • ColorPicker: Corrections in System.Threading 9563227
  • ColorPicker: Fully qualify ToolTip for macOS c208c90
  • Selector: fixed IsSelected not working on Selector and ListViewBase items ef26819
  • sourcegen: Correctly evaluate UseWPF b2ea6a8
  • xaml: Reduce size of AOT'ed compilations from Xaml b6380f0
  • [Android] Geolocator should detect permission when app resumes 1a06aca
  • Apply proper TreeViewItem indentation a437d2f
  • Bump Wasm Bootstrap for uno-app default afea3db
  • Disable parallel query on WASM 20b1786
  • Disable recent samples caching while in release 3ae3bf8
  • Executing OnPropertyChanged, Style incompatibilities, vector behavior alignment 5a44136
  • Fix rebase issue b617eab
  • Fixed samples app compilation due to generators 69189ba
  • Fully qualify Window reference for iOS 4ab7915
  • Loading event might not be invoked if alement added in visual tree while invoking the Loaded of its parent cb4f6fc
  • Make sure the Loading event is not raised twice bb58a81
  • Make sure to invoke OnApplyTemplate if setting the template after control has been loaded 89dcd85
  • Perform app initialization only for ApplicationActivity d282a4f
  • displaymemberbar: Removed DisplayMemberTemplateSelector, replace with a real solution similar to what UWP/WinUI is doing 7e2ab4e
  • ListView: Update SelectedIndex on selection via container 704399b
  • page: Page is the only UserControl which draw its own Background 964c2a2
  • scrollBar: Make sure to unsubscribe from events on Unload + restore managed scroll bars in default ScrollViewer template for wasm ae4ddfe
  • scrollViewer: Fix memory leak when SV used with managed ScrollBar b8ca32c
  • wasm_insert: [Wasm] Ensure DOM & Managed visual tree are synchronized after using Children.Insert() on a Panel. 89b4354
  • Geolocator methods invoked on Dispatcher when necessary e67e139
  • HighContrast and Light reveal brushes now match UWP 56ee223
  • Properly implemented TreeView events and ItemsSourceView ecb8b09
  • Schedule InitializeIfPermissionIsGranted on the dispatcher 7f29597
  • Support Add() in ArrayList when Capacity is not set before daad101
  • skia: Add default implementation for AnalyticsInfo a21ed13
  • unix: Adjust ApplicationData.Local path to use proper locations under unix c53e429
  • return empty collection when expenting a IEnumerable d97dc73
  • Updated a lot of typos 74ca2b2
  • textbox: A binding on the TextBox.Text property were always treated as a TwoWay binding. d2b0b80
  • textbox: On WASM, the CornerRadius is not applied on the TextBox's background <Border>. 2e08a70
  • vsix: Properly support solution unload and timeout on nuget failure 9f79917
  • build removing unnecessary async a60e333
  • Check for ValuePatternIdentifiers existence before usage 745a898
  • Fix incorrect implemented list for CoreWindow.PointerCursor 563f6ff
  • clipping: Fix GH652 - Problem with clipping on both Wasm & Skia 703242b
  • clipping: Fixed dynamic .Clip Rect were broken in recent clipping changes. 540423d
  • DatePickerFlyout: [iOS] DatePickerFlyout.Date is not populated properly 1c271b5
  • dotnetnew: Add default root namespace for cross-runtime libraries 55d9d79
  • dotnetnew: Fix WPF Skia Host package version replacements f597223
  • dotnetnew: Remove temprary workaround in Skia template 738c5de
  • dotnetnew: Tentative adjustments for VS 2019 integration fe212bf
  • macOS: casting issue 467002f
  • macOS: templated control not attaching events 1a2a157
  • net5: Fix the generation of .deps.json file 532aae9
  • rect: implicit casting of string to Rect were not protected against null-ref exceptions ca7cc49
  • skiawpf: Improve the wheel smoothness a66ee03
  • slnf: Fix missing project in solution filters 8a7edd0
  • theme: Update animation-filled values when theme changes 232d8c7
  • timepicker: Fix timepicker flyout NRE when unloading 106ab50
  • wasm: Some CSS values were not using culture independant serialization. 29dcc78
  • xaml: Make ResourceDictionary.Source lookups case-insensitive ab0c986
  • [Android] Broadcast status after requesting access 441925d
  • [Android] Permit geolocator subscription before permission 82c1427
  • Disable currently unsupported code 1db40b1
  • Do not ask permission in Geolocator.ctor 93db8f6
  • Listen to hinge angle sensor properly b91d655
  • Update cross-target library uap version to 17763 160fdb7
  • Update src/Uno.UI/UI/Xaml/Controls/WebView/WebView.Android.cs d4b853c
  • Use MathEx.Clamp() to support .net standard 2.0 dda9adc
  • Use Task.Run() instead of ThreadPool.RunAsync() edb5e68
  • skia: Assets may not be copied properly to the output or publish folder e37c0e8
  • Fully qualify Window for iOS/macOS 308ef6c
  • Remove changes to Uno.UI project file 96a3217
  • Remove Math.Clamp() to support .net standard 2.0 40bc0c1
  • wasm: lineheight is applied to textblock 3491612
  • wasm: splash screen now respects aspect ratio d1d5448
  • Allow setting title before window becomes key 74e3880
  • Pivot ItemsSource binding f5921bd
  • Pivot SelectionChanged event 59cf2a8
  • Use template SourceName instead of old template parameters 8f41371
  • validate for null 4b7a9d0
  • NSUImageExtensions: fixed image monochrome recoloring on ios cd16da2
  • shared: update solution template to include checkbox fixes cd7c013
  • ToggleMenuFlyoutItem: added DefaultStyleKey so that the correct style is used 4994148
  • [Wasm] Don't use Assemly.Load in ApiInformation 67a554e
  • Exclude ResourceDictionary to improve linkability of XamlControlsResources 597ca36
  • Reduce the use of Assembly.Load during startup 39f4ffb
  • textBox: Fixed Dark mode for fluent textbox 58eef71
  • transforms: [MacOS] Fix support of RanderTransformOrigin 36a5eaa
  • UnoLibrary template creates a valid project 45c2f5b
  • update to AndroidX to match the standard Uno Template fe2ec48
  • Use Uno specific chevron symbol for collapse/expand in TreeView a60a0af
  • wasmxf: Wasm XF template didn't build c30d4bc
  • xbind: [iOS/macOS] Fix memory leak when using x:Bind b93e205

Performance Improvements

  • Add new ArrayList to avoid extra copy creating bitmaps f97af39
  • Reduce generated code size for BindableMetadata and DependencyProperty 9296796

BREAKING CHANGES

  • shared: the symbol font (winjs-symbols) has changed and the new one (uno-fluentui-asset) should be used.
uno - Uno Platform 3.0

Published by jeromelaban about 4 years ago

Here's the amazing Uno 3.0 release, again packed with features, bug fixes and performance improvements.

This release is also the first in a long time to introduce binary breaking changes, yet with minimal behavior and code breaking changes. Rebuilding your application using Uno.UI 3.0 will generally be enough, with a few adjustments to the configuration. You can visit the documentation for more information.

Among the major features:

  • Acrylic Brush support for iOS, Android, macOS and WebAssembly
  • Many ScrollViewer improvements, such as XAML ScrollBar
  • Themeing support, with ResourceDictionary and implict styles updates
  • Fluent Styles from WinUI 3.0
  • DisplayInformation support for DPI and orientation changes
  • The inclusion of WinUI 3.0 API set support (Preview 2)
  • macOS support updates (Shapes, Keyboard, MediaPlayer, ...)
  • MidiInPort support (iOS, Android, WebAssembly)
  • MSAL.NET support for WebAssembly
  • WinUI ProgressBar (based on AnimatedVisualPlayer), SplitButton
  • x:Bind support for events
  • FileIO updates to support Buffer, DataReader, DataWriter
  • Clipboard reading and writing updates (iOS, Android, macOS, WebAssembly)
  • Support for CustomXamlResourceLoader and CustomResource
  • Support for NetworkInformation and status

We've also improved the performance of the DependencyObject and DependencyProperty classes, making it faster for code accessing dependency properties by their C# accessor through caching and O(1) property access.

You'll also notice below a large set of changes related to the addition of the Skia backend, which are to be released in preview for Uno.UI 3.1 as we add new features. The changes for the support of Skia largely impacted the support for WebAssembly, making it a good choice to include in Uno 3.1 and avoid including breaking changes. These changes include the introduction of the Uno.UI.WebAssembly package that needs to be added to the head WebAssembly project. For more information visit the documentation.

On the breaking changes front, for which most of the code will not be affected:

  • On iOS/Android/macOS, ee aligned the APIs that Uno used to incorrectly type as native views, particularly with UIElementCollection and Panel.Children. Some elements such as Image are now getting the appropriate base class.
  • UIElement now no longer provides a implementation of INotifyPropertyChanged
  • We removed the support for the deprecated Android 8.0. Make sure to upgrade to Android 10.0.
  • If you have an existing Uno 2.4 or ealier application, make sure too adjust the Application constructor to include the new () => new App() lambda
  • Many other binary breaking changes that require the rebuilding of the libraries that depend on Uno.UI.

Have fun with Uno 3.0!


Features

  • [Skia] Add CrossRuntime library support a6c9824
  • Add Skia (Gtk/Wpf) unoapp heads in dotnet new 74d2518
  • AcrylicBrush: First Android version 4a291e7
  • AcrylicBrush: First iOS implementation 98ebcb4
  • AcrylicBrush: First macOS implementation 17ea8a5
  • AcrylicBrush: First WASM implementation 4dd994f
  • dispatcherQueueTimer: Add support of the IsReapeting property 556e4ae
  • FileIO: WriteTextAsync and AppendTextAsync fcee9b7
  • macos: [MacOS] Add clipping support 1c8a0ad
  • pointers: [Skia] Add support for key modifiers and improve support of horizontal scrolling (including shift+wheel) 5b9bc79
  • scrollViewer: [Skia] Add support for SV.ChangeView (and scroll bars!) d79c9fd
  • scrollViewer: Add style that uses the native scrollbars fcdc215
  • scrollViewer: Add support of managed ScrollBar in ScrollViewer efcc30f
  • scrolViewer: Implement SV vsiual states (used to render managed scroll bars) 6fe45f1
  • skiawpf: Added required extensions for Skia.Wpf with naive implementations 5f6a4b5
  • skiawpf: Added support for command-line arguments cafc618
  • skiawpf: Added support for FontWeight, FontStyle & FontStretch. Works only with Font Families, not when specifying font file directly. 03698ab
  • skiawpf: Added support for Full Screen mode 64adca7
  • skiawpf: Added support for Horizontal Mouse Wheel 108aedd
  • skiawpf: Added support for pointers - first working version. 9801c51
  • skiawpf: Added support for Window Title ea5e7f8
  • styles: Add XamlControlsResources, add compact resources ecb1868
  • styles: Import Fluent styles from WinUI 16639c9
  • theme: Limited support for FrameworkElement.RequestedTheme b543db1
  • wasm: add the FileSavePicker which caches a file in the browser and downloads it when modifications are done. 5c19363
  • wasm: Added GetHtmlAttribute for an Element on Wasm. 92b0489
  • wasm: BitmapImage now supports scale qualifiers b14ee4d
  • [Skia] Add scaled images support 9117af9
  • [Skia] Add support for UIElement.TransformToVisual 8403fc2
  • Add codespaces support 235a3d4
  • [Wasm][Skia] Add icon and title support from package.appxmanifest dc4e7ee
  • IOS TimePicker flyout styling f4d7bbb
  • IsApiContractPresent detects Uno.WinUI package b383c42
  • Update WASM Path on changes d06cb5b
  • Various skia updates d7dd9ce
  • TextBlock: Added TextBlock MaxLines implementation for WASM 94a3650
  • [Skia] Load fonts from local path feaec98
  • Add cross-runtime library support for dotnet new 605d9a6
  • color: Applying a value to a SolidColorBrush in a style now works well as on UWP. 8c5213d
  • Add support base for Skia on .NET Core dbf8aa8
  • Add support for msbuild UnoRuntimeProjectReference da90b3f
  • coloranimation: First implementation of ColorAnimationUsingKeyFrames 0091a9f
  • DisplayInformation: Android OrientationChanged and DpiChanged 76dd0cf
  • DisplayInformation: iOS OrientationChanged and DpiChanged 98fef86
  • DisplayInformation: macOS OrientationChanged and DpiChanged events 06be6fc
  • DisplayInformation: WASM DpiChanged and OrientationChanged 819dfd1
  • DisplayRequest: WASM support 91d3300
  • frameworkelement: Add VisualTreeHelper.AdaptNative()/TryAdaptNative() 9bdc1a4
  • Launcher: Launch file/folder on macOS 81bd3ac
  • macOS: Window resize, min size, size changed be6f1ad
  • progressbar: Added display of CurrentState name in sample. 3f6f1f8
  • textblock: [WASM] Added support for IsTextSelectionEnabled on TextBlock. 8ad9560
  • wasm: Add new methods to set and unset CSS classes on a HTML element. 7bac999
  • wasm: Added javascript helpers for Wasm, to allow interop with javascript after the new packaging system. b1d11d0
  • Update to WinUI 3.0.0-preview2.200713.0 b449e53
  • elevatedview: Added support for macOS df31c10
  • elevatedview: ElevatedView on Android now supports setting the shadow color. 0275d09
  • (macOS) Add support for Shape Line a61e5a9
  • (macOS) Add support for Shape QuadCurve f87f659
  • (macOS) Add support for Shapes Path d480964
  • Add support for INPC(String.Empty) to notify all object's properties 308eb77
  • Add support for TextBlock.Foreground update on SolidColorBrush.Color changes a584e60
  • animation: Implemented FadeInThemeAnimation + FadeOutThemeAnimation. 9d3da6e
  • converter: Added CornerRadiusFilterConvert & CornerRadiusToThicknessConverter 3427e7a
  • converter: Added XAML convertion from SolidColorBrush to Color. da8eb9f
  • imageBrush: [Android] Add support for WriteableBitmap 8975be0
  • imageBrush: [iOS][macOS] Add support of WriteableBitmap 08716bb
  • imageBrush: [WASM] Add support of the ImageBrush 7af4d1e
  • listview: [WASM] [MACOS] ListView observable collection support a181d40
  • msal: Added new Uno.UI.MSAL add-in project file into solution. eb651fa
  • msal: Added support for MSAL in SampleApps of all platforms 7418302
  • progressbar: Added WinUI 2.3 ProgressBar first implementation. 195af14
  • progressbar: use WinUI template c4a3ba6
  • Add Uno.UI package to UWP in templates 377612d
  • Add x:Bind support for events 2b81c0e, closes #3172
  • Adds the Dopes performance test ff61bc2
  • Adjust for WinUI 3.0 Preview 1 bits 91b1576
  • Buffer d418611
  • DataReader d756b36
  • DependencyProperty read/write benchmark 141aa4d
  • msal: Added a sample for MSAL+Graph 4ce9339
  • Application.Exit on macOS cce79db
  • ElevatedView implementation for Uwp 743dbec
  • Set UnoSkipUserControlsInVisualTree to false by default 481f20c, closes #61
  • Support CloseRequested and Suspending on macOS facc0a2
  • Theme Asset Qualifier on Android bd6c619
  • Upgrade UWPSyncGenerator to Roslyn 3.6.0 3a8f8b9
  • Clipboard: ContentChanged on macOS 41de59f
  • Clipboard: GetContent on iOS b83d7d2
  • Clipboard: iOS Flush, Clear and ContentChanged 73d1213
  • Clipboard: macOS support for Clear and Flush 2e6932b
  • Clipboard: Support Clear, Flush, ContentChanged on Android ec6088e
  • Clipboard: Support Flush, Clear, ContentChanged on WASM 920304e
  • Clipboard: Support GetContent on WASM b4ba967
  • Clipboard: Support storing multiple data items on Android 482b0dd
  • easing: Implemented Circle easing functions 82ab08e
  • ios: customizable MenuFlyout cancel text 36ba934
  • MenyFlyout: Add support for ToggleMenuFlyoutItem 7542b0a
  • MIDI: Support for MidiInPort on WASM 00b5159
  • MIDI: Support MidiInPort on Android 5995708
  • MIDI: Support MidiInPort on iOS b26e069
  • styles: [Android] [iOS] Allow MessageDialog.ShowAsync() from background 43a2189
  • styles: Allow native style usage to be overridden per control b0f8f86
  • styles: Implement 'xaml scope' resource resolution b0376de
  • styles: Populate Resources from XAML bd3539c
  • styles: Populate ThemeDictionaries defined in XAML 18240f7
  • styles: ResourceDictionary - support Source resolution in code-behind d4f2407
  • styles: Support directly assigning local Resources from Source d339ff2
  • styles: Support ms-appx in ResourceDictionary source fb60d0d
  • styles: Support resolving external ResourceDictionary.Source from Xaml bce526d
  • styles: Support ResourceDictionary subclasses from XAML 39cff50
  • styles: Support ResourceDictionary.MergedDictionaries in XAML generation 5d04d91
  • styles: Update ThemeResource references when RequestedTheme changes 6a4a01c
  • suspension: [Wasm] Add support for Application.Suspending 8fa27db, closes #1165 #3120
  • tests: [UnitTests] Add ShowLocalVisualTree() e2b2ac1
  • textblock: Supports HorizontalTextAlignment property. aafce62
  • themes: Observing theme changes 7726948
  • xaml: Support conditional XAML bfc4fb0
  • xaml: Support CustomResource markup and CustomXamlResourceLoader 2020be3
  • [MacOS] Add support for keyboard events 02aa9ab
  • Implement DataWriter 07fd1e1
  • Sensors return null on unsupported platforms 2daaeb7
  • Support spaces in CornerRadius and Thickness type converters 61bd7ab
  • Update Android project template to SDK 29 6725815
  • Update Microsoft.NETCore.UniversalWindowsPlatform to 6.2.9 ab811bd
  • MediaPlayer: Support for macOS d84cd1e
  • NetworkInformation: Android connectivity 9493326
  • NetworkInformation: iOS connectivity 76d0e0b
  • NetworkInformation: macOS connectivity 238f82b
  • NetworkInformation: WASM support for network status eac4d56
  • ProtocolActivation: Implemented protocol activation on Android f6576ba
  • ProtocolActivation: Implemented protocol activation on iOS ba1f722
  • ProtocolActivation: Implemented protocol activation on macOS 72ffdc8
  • ProtocolActivation: Implemented protocol activation on WASM 1211d49
  • shapes: Improve code readibility 4b3c8f7
  • wasm: Added ability to call async javascript Promise<string> and awaits it. dede46d
  • Add dotnet new unoapp-winui support 095fe86
  • Add support for dotnet new unoapp-winui 70ebc49
  • Add support for WinUI 3 Alpha c6685d6
  • Added rudimentary mouse input support for iPadOS f2f09ec
  • Update WinRT API set to 2004 (19041) 5559ece
  • SplitButton: Implemented SplitButton and ToggleButton 6c43f44
  • feat(splitview)!: Change SplitView.Content and SplitView.Pane to be UIElements 9e1aad7
  • fix(uielement)!: Remove IUIElement interface 062151c
  • feat(flyout)!: Change Flyout.Content to be UIElement 1e93e2c
  • fix(frameworkelement)!: Make IFrameworkElement internal 2b477a5
  • fix(usercontrol)!: [iOS] [MacOS] Remove new Content 0b965cb
  • fix(frameworkelement)!: Change FrameworkElement.FindName() to return object d1aaee4
  • fix!: Make various legacy-ish interfaces internal 27c0cd7
  • fix(frameworkelement)!: Make Layouter internal 6220654
  • feat(popup)!: Change Popup.Child type to be UIElement 9670650
  • fix(control)!: Make GetTemplateRoot() internal 697ca4f
  • feat(border)!: [Android] [iOS] [MacOS] Change Border.Child to be UIElement 202043d
  • fix!: Remove BatchCollection type f34407c
  • feat(panel)!: [Android] [iOS] [MacOS] UIElementCollection exposes a list of UIElements 893cf4b
  • feat(progressring)!: [Android] [iOS] Make WUX.ProgressRing inherit from Control 11c32b2
  • feat(scrollcontentpresenter)!: [Android] [iOS] [MacOS] Make ScrollContentPresenter inherit from ContentPresenter 25c39c6
  • feat(image)!: [MacOS] Make Image inherit from FrameworkElement 6e8cb8f
  • feat(image)!: [Android] [iOS] Make Image inherit from FrameworkElement 9a3790a
  • refactor(StorageFolder)!: Rename CreateFileAsync(String, CreationCollisionOption) parameters a697a52
  • fix(resourcedictionary)!: Make ResourceDictionary.Lookup() internal, use correct lookup f8860cb
  • fix(app)!: [Android] Remove delegate-less activity constructor 5929533
  • fix(styles)!: Change default FontSize value b5521bf
  • fix(styles)!: Remove incorrect TextElement.Style property d96e585
  • fix(styles)!: Set DefaultStyleKey on all controls 302f0de
  • fix(styles)!: Distinguish default and implicit Styles 51e69e3
  • feat(styles)!: Implement tree-based resolution of StaticResources 0ef6df3
  • fix(styles)!: Fix ThemeDictionary resolution f2428e3

Performance Improvements

  • grid: The stackalloc clauses has been move out of loops to prevent leaks, per Standard ECMA-334 Standard december 2001, section 25.7. 7209448
  • [WASM] Avoid useless interop when creating shape 5111119
  • [Wasm] Move GetThicknessAdjust to virtual method fedcafb
  • [WASM] Provide the culture to avoid useless/costly check to the Thread.Current.Culture 72feea0
  • [WASM] Subscribe to all pointer events at once 92d0fe6
  • Add DependencyProperty local caching support 3304465
  • Adjust canvas children enumeration ff8b869
  • Avoid dictionary check in DP for the owner type a70f624
  • Make DependencyObjectStore._thisWeakRef lazy 59f5894
  • Move DependencyObjectStore to nullable 1221816
  • Remove use of Enumerable.Any() in Grid layout 7ab8c6f
  • Use O(1) indexing for dependency properties collection 5f1fe41

BREAKING CHANGES

  • The dependency on System.Runtime.InteropServices.WindowsRuntime has been removed to avoid invalid uses of EventRegistrationToken on Windows.
  • This PR makes many breaking changes in the WebAssembly target to enable the support for additional backends.
  • Aligns with Windows.
  • This was a placeholder for properties that should have been typed as UIElement, but needed to support IFrameworkElement. It's no longer needed now that IFrameworkElement isn't public.
  • Now is a UIElement. Aligns with Windows.
  • Remove the IFrameworkElement interface from the public API. This interface no longer needs to be publicly exposed now that remaining framework types (Image, ScrollContentPresenter, ProgressRing) are FrameworkElements, and removing it ensures that relevant APIs are aligned with the WinUI contract.
  • Remove UIView/NSView-typed Content. Binary breaking change.
  • Now returns System.Object. Aligns with Windows.
  • Remove these interfaces from the public API, which are not part of WinUI and not particularly useful either.
  • Removed type. This is an implementation detail which normally shouldn't be accessed from external code.
  • Popup.Child no longer has native view type. Aligns with Windows.
  • Removed method. Not part of the WinUI contract and normally shouldn't be called by external code.
  • Border.Child no longer has native view type. Aligns with Windows.
  • Remove the BatchCollection abstract type which was used as the base type of UIElementCollection. This aligns with Windows and simplifies the UIElementCollection implementation.
  • UIElementCollection is now typed to UIElement rather than to the native view type, aligning with Windows and WASM.
  • ProgressRing on Android/iOS now inherits from Control. It's still using the native control to display the progress ring, which is now nested inside the WinUI one.
  • ScrollContentPresenter on Android/iOS/MacOS is now a FrameworkElement, instead of inheriting directly from native scroll viewer. The native scroll viewer is now a child of the managed ScrollContentPresenter.

On Android only, the NativeScrollContentPresenter continues to implement IFrameworkElement, since it uses the Layouter to arrange its children which is tightly coupled to IFrameworkElement.

  • Image now inherits correctly from FrameworkElement, instead of directly from the native type. The native image is now internally set as a child of the Windows.UI.Xaml.Controls.Image.
  • Image now inherits correctly from FrameworkElement, instead of directly from the native type. The native image is now internally set as a child of the Windows.UI.Xaml.Controls.Image.
  • This change is binary breaking, but will not impact source code depending on these members.
  • The RaisePropertyChanged method is now removed, as it is not part of the UWP contract. If you relied on this behavior, you'll need to implement the INotifyPropertyChanged interface on your class explicitly.
  • An INPC now processes the value of the raised property, regardless of the reference having changed. The behavior can be restored using FeatureConfiguration.Binding.IgnoreINPCSameReferences = true;
  • Align StorageFolder.CreateFileAsync(String, CreationCollisionOption) with UWP
  • This method isn't part of the public .NET contract on WinUI. Use item indexing or TryGetValue() instead.
  • Removed this ctor entirely because it's incompatible with system theme (light mode/dark mode) handling.

This is a one-line fix in app code (normally Main.cs):
: base(new App(), should be replaced by : base(() => new App(),

  • Default FontSize for TextBlock, Control etc changed from 11.0 to 15.0, to match the default value for UWP with SDK 16299, which Uno is currently aligned against. (Note that this should change to 14.0 when Uno updates to target a newer version.)
  • Removed unused TextElement.Style property. This doesn't exist on UWP, and doesn't seem to be used any more by Uno.
  • DefaultStyleKey now must be set on custom control implementations that have their own style, as for Windows. (Before Uno implicitly behaved as if DefaultStyleKey was always set to the most derived type.)

Adjusted from GetType() to typeof(NavigationViewItem) for NavigationViewItem. This matches Win.UI.Xaml behaviour, though granted the MS.UI.Xaml code looks more like GetType().

  • Styles handling has changed significantly to conform closely with Windows behavior. Implicit and explicit Styles within app code are now additive with the default Style coming from the framework, unless DefaultStyleKey is modified.

Partial implementation of correct style handling:

  • maintain separate user and default layers
  • clear previous style when new style is set
  • The tree-based resolution of XAML resources creates binary breaking change with libraries compiled against previous versions of Uno, which were generating public static properties for every resource. Libraries containing XAML resources will need to be recompiled with the latest Uno version.

This replaces the previous approach (only a single copy of a resource was possible/permitted per app).

Uno's new approach doesn't exactly match UWP (parse-time XAML scope resolution), instead it uses a 'two-speed' approach where the lookup is made in App.Resources when the XAML is initialized, and then again at load-time based on the resources in scope in the local tree.

  • To match Windows behavior, resources in Default ThemeDictionary are no longer considered if a more specific ThemeDictionary exists (eg Light), even if that dictionary doesn't contain the key.
  • This update now forces the materialization of UserControl instances in the visual tree.
  • UserControl no longer incorrectly accepts VisualStateManager, and must be placed on the first child
  • To restore the skipping of UserControl instances, add the following in the csproj:
<UnoSkipUserControlsInVisualTree>true</UnoSkipUserControlsInVisualTree>
  • Selector: The Selector.SelectionChanged event is now raised after the SelectedValue, SelectedItem and SelectedIndex properties are updated. The original behavior was incorrect.

Bug Fixes

  • Don't use Type.GetType in ApiInformation 56c6487
  • autosuggestbox: Fixed bugs in AutoSuggestBox when using TextMemberPath 1ebafdb
  • elevatedview: Size of ElevatedView was not following layout constrains 32371fe
  • imagebrush: [iOS] Update background when ImageBrush changes d3c87f0
  • ios: TimePicker ClockIdentifier getting overwritten 36c94e6
  • PasswordBox: fixed reveal button being visible when it shouldn't be. Added PasswordRevealMode property. baf207b
  • perf: Disable untracked sources 07dac32
  • scrollVIewer: Detach from events to avoid memory leak af5335c
  • shapes: [Skia] Adjust shapes path alignment given StrokeThickness 4959b08
  • skia: GridView panel is now a WrapPanel a6d37db
  • Close PathFigure 81acc98
  • Some controls might be recycled on creation 75eda7f
  • elevatedview: Fixed a problem on Wasm on cultures using a comma as decimal separator. 8d63f55
  • style: DatePickerFlyoutPresenter style not applied e296744
  • theme: [WASM] Ensure entire visual tree is updated when theme changes 83ce5ed
  • theme: Apply updated theme resources with correct precedence 6172b72
  • theme: Update ContentPresenter and TextBlock default foregrounds when theme changes 0f2bffe
  • timepicker: aligned style with uwp 43f5639
  • wasm: Fix invalid path for Lottie assets b17986a
  • Make Application.Resources writeable 59691ca
  • Mark FrameworkElement.Tag as implemented 2f6e2e9
  • picker flyout cancel button partially blocked by notch in landscape 11569ed
  • RadialProgressbar Direction b44160a
  • RadialProgressBar on macOS 8b9a823
  • Rectangle drawing for specified width and height d57e0f1
  • Revert SampleApp theme detection 4aec41f
  • Workaround for PG-AOT issue fd0838b
  • ApplicationTheme: Avoid macOS detection crash 1af18c3
  • ApplicationTheme: macOS theme change observing bf676a6
  • elevatedview: ElevatedView were not measuring properly its elevated content on UWP. 2b5b389
  • elevatedview: ElevatedView were not properly updated when the background was changed. 64c100d
  • elevatedview: Patch to prevent the ElevatedView from being cut when used directly in a ContentControl. 70b6b83
  • macOS: crash when finishing animation da2ae20
  • macOS: textblock not showing text 8efc1ce
  • passwordBox: [MacOS] Fix the reveal button not working b1c2208
  • shapes: Fixes stretch none top/left alignment 6ece5dc
  • theme: Ensure Setters in visual states apply up-to-date ThemeResource values 86a546b
  • theme: Update shared resources in dictionaries when system theme changes 293dfe8
  • theme: Update ThemeResource bindings in non-FrameworkElements 67e71f6
  • wasm: Slightly improved ImageBrush image positionning on Wasm. Still not 100% accurate with UWP. 8c96d38
  • [Skia] Fix TextBlock hit testing e146e22
  • [Skia] Make visiblity change invalidate the layout 17ffa98
  • android: ImageBrush stackoverflow may terminate the app 8c3defb
  • Android: failsafe for layouter and virtualizing panel native overrides 88225e0
  • animations: Fix NRE when animating Transform that's not set as RenderTransform 89e02a3
  • elevatedview: Added support for Round Corners on UWP for ElevatedView. 298d589
  • flyout: Don't apply null FlyoutPresenterStyle c5a27f9
  • shapes: Adjust unbounded relative shapes measure 9097c1a
  • Change default ShadowColor Property on ElevatedView for Android 2774ea2
  • Race condition in CoreDispatcher.RunAsync fd05f5d
  • Image: images now use the MonochromeColor property on Android af2b4a7
  • revealbrush: [Android] Fix exception when using RevealBrush 16f6a39
  • skia: dark theme support 5954646
  • skiawpf: Set as handled native wheel events. 9947711
  • splitview: Support non-buttons as light dismiss layer c8dfe9a
  • textBlockButtonStyle: Introduced uwp generic TextBlockButtonStyle, to unify platforms 86137b9
  • uielement: Apply all Transform types to UIElement.Clip 4598105
  • xaml: Allow double literals in Xaml with superfluous curly brackets 96f4b45
  • xaml: Allow duplicate resource names inside top-level ResourceDictionary fcc508d
  • xaml: Fix parsing errors when default namespace is not first declaration 982cc0d
  • xaml: Support converted ThemeResource assignations 8e6e16e
  • [Skia] Adjust text rendering opacity 7a9f3d7
  • Adjust default LogicalDpi for unsupported platforms 02187f5
  • Adjust for gitpod default root e663445
  • Apply layout rouding, fix invalid rectangle thickness computation 4505e97
  • Publish the winjs symbol font in samples app fe6bf25
  • SamplesApp.Wasm won't build 759e3b6
  • elevatedview: Fixed problem with inclusion of Generic.xaml in the Toolkit project. 4a9ccba
  • elevatedview: Let custom shadow color only on API 28+ f5d408a
  • elevatedview: On Windows, the ElevatedView result is now more similar to other platforms. cc8cf32
  • elevatedview: Removed usage of IFrameworkElement 0508640
  • elevatedview: Set default background to transparent. 3e53827
  • ellipse: On Wasm, the arrange were not properly invalidated when the Stroke was changed. eb4f880
  • ellipse: On Wasm, the ellipse stroke were not properly calculated. b20434c
  • pointers: [WASM] Fix the OriginalSource of pointer events for Image 1a89220
  • shapes: [WASM] Restore fix to properly suppoirt null Points collection in Polygon and Polyline cc839cf
  • timePicker: [IOS] Timepicker is now visible in dark mode eff9eac
  • wasm: ContentControl clipping behavior were not compiled for Wasm. bf0b036
  • [Wasm] Adjust LottieVisualSource with packager 1.3+ c3ce26b
  • Adjust Template to remove __WASM__ a8ecb66
  • DataContext is wrongly propagated to all DependencyObject when set into a DependencyProperty 4863929
  • Do not use the FwPropMeta when not needed (fix CI) 5a2fd53
  • Fix UIElementCollection.Enumerator doesn't enumerate 013903f
  • Fix UWP build 022d641
  • Foreground type check on TextBlock 77a0cbb
  • Include UNO_REFERENCE_API for skia targets 51df8bf
  • Include UpToDate checks for shared projects xaml files 03ebd34
  • Make all Uno's DP (a.k.a. Framework DP) use the FrameworkPropertyMetadata bb7f225
  • Make sure that all ControlTemplate properties are not propagating the DataContext 5f6049d
  • Make sure that all DataTemplate properties are not propagating the DataContext 902ac10
  • Make sure that all Style properties are not propagating the DataContext 1403806
  • Remove dependency on System.Runtime.InteropServices.WindowsRuntime 4753d37
  • ThicknessHelper crash in UWP runtime tests affb76b
  • android: Adjust image loading for invalid characters 2b9bebe
  • animation: Fixed DoubleAnimationUsingKeyFrames on Android. 2a037e2
  • animation: Storyboard.TurnOverAnimationsTo() were not stopping the current running animation. 11b51ba
  • applytemplate: Added a new deferred mode for .ApplyTemplate(). opt-in for all platforms except Wasm which is opt-out. d60d093
  • applytemplate: Call the OnApplyTemplate synchronously when .ApplyTemplate is used. c069cd8
  • applytemplate: Make the deferred OnApplyTemplate default on both Wasm & Tests (dotnet) d0373d0
  • applytemplate: UseDeferredApplyTemplate -> UseDeferredOnApplyTemplate a2f77ca
  • shapes: [WASM] Poly<gon|line> beeing updated when points are added ccecc83
  • shapes: Improve PointCollection to not clone points list if useless 39f97ae
  • xamlgenerator: prevent the generator from generating useless code for global resources. 338ea92
  • xamlgenerator: Previous fix were too intrusive. ca56caa
  • xamlgenerator: Work-around for a problem where some XAML files could be included many times in the same output. 84c26a3
  • [Wasm] DispatchStorageInitialized is not static and fails under AOT 21e858b
  • [Wasm] Fix invalid multiple IDBFS initialization, synchronize StorageFolder async operations with IDBFS initialization 78224e2
  • Adjust gitpod serve script bd0c2c8
  • Align reference comparison for INPC events acd1f32
  • CI build with 'method not found' error 45cfff4
  • Make FrameworkElement.OnLoaded/OnUnloaded private d33a72a
  • Make sure that all ItemsPanelTemplate properties are not propagating the DataContext 47909f2
  • Merge issue 7a57920
  • Move field defined properties to properties 9951318
  • NavigationView AlwaysShowHeader property default as true f6b13be
  • Prevent possible collection changed while enumerating in COmpositionTraget.Rendering eed0cfe
  • re-added icons folder 3a5e4d7
  • Remove INotifyPropertyChange from iOS, Android, macOS. e82cde5
  • SharedAssets.md build action is not supported 93fa746
  • TakeScreenShot failure when the app fails to start ab85e9c
  • ToggleSwitch.Header is never visible 52b6cb2
  • ToggleSwitch.Header is never visible 93d5e33
  • ToggleSwitch.Header is never visible f2151c0
  • ToggleSwitch.Header is never visible d7f6c31
  • Update RemoteControl server to netcoreap 3.1 60b58fb
  • Use RetryAttribute fr AutoRetryAttribute a44df01
  • AutoSuggestBox: handle keyboard input for chosing suggestions. invoke proper events as per uwp. 22c3c6a
  • Documentation: doube table of content 87a431e
  • path: Fixed path with geometries on Wasm were not serialized using CultureInvariant, leading to errors in cultures using a comma as decimal separator. 1ccf922
  • pointers: [WASM] Fix the original source of the pointer events on shapes 6cc77f4
  • progressbar: fix duplicated control (removed UWP ProgressBar for WinUI target) ca5735e
  • progressring: ProgressRing were still visible on iOS when setting Visibility=Collapsed 0d4ef83
  • ResourceDictionary: Key overwrite via indexer 64455ee
  • scrollBar: Disable Animation on WASM 7c4a8c6
  • shapes: [iOS] Cleanup and fix final clipping issue for new measure/arrange a9f2af2
  • shapes: Fix the Polygon on WASM (not initialized) 435e56f
  • StorageFolder: Adjust CreateFileAsync(String) behavior 6c35347
  • StorageFolder: Fix CreateFileAsync(String, CreationCollisionOption.ReplaceExisting) behavior 2a0a9cd
  • style: Fix property set not applied within callback from style application 9c08827
  • UnoSolutionTemplate: Fully qualify Uno.UI.ActivityHelper.AllConfigChanges a4b8929
  • webview: Fixed video display in WebView on Android: the control was forced to use software rendering. d14114f
  • Corner radius parsing with spaces 765cf30
  • colorbrush: removed invalid explicit type cast. f4dab42
  • converter: implicit operator was a bad idea. 0da997d
  • progressbar: DefaultStyleKey is wrong, following new resource approach. a3cf771
  • progressbar: Fixed ProgressBar for Wasm. 99ee738
  • progressbar: Initial width of the indicator was 0 on iOS. 641bbc9
  • resources: Add missing CalendarDatePicker and CalendarView system resources cd1a775
  • resources: Add missing ComboBox resource e46faa6
  • resources: Add missing ComboBox system resources 6983ca4
  • resources: Add ScrollViewerScrollBarlessTemplate template cde2aa3
  • resources: Use correct dark and high-contrast values for SystemChromeMediumHighColor 7442dd1
  • shapes: [iOS] Fix Horizontal and Vertical line not showing, and Polyline clipping issues 398fb82
  • shapes: [iOS] Fix support of vertica/horisontal lines ddc28f2
  • shapes: [iOS] make all shapes use the new measure/arrange logic c782a7d
  • shapes: [iOS] Refactor the way shapes are rendered on iOSmacOS a795a24
  • shapes: [iOS] Restore the layer support 9542e3f
  • shapes: Complete the absolute shapes rendering refactor 5725d86
  • shapes: Fix possible alignemnt issue whith scaled down Path 125da9b
  • shapes: Fix some stretching issues ebafb22
  • shapes: Fix the CommandBar invalid measure b3361cc
  • shapes: Fix the Path stretching issues b7807b6
  • (macOS) shapes build 5c3bf7e
  • shapes: Polygon and Polyline's Points property was not intialized 653946a
  • [iOS] Fix DependencyObjectStore dispose race condition, remove unused members. 39987a0, closes #3359
  • Add missing SystemReveal resources 751dd37
  • Missing AndroidX dependency fd2f687
  • FontWeight: changed UI.Text.FontWeight to better reflect UWP definition 1d7de9c
  • foundation: Fix ObservableVector.Remove() raising event twice 0f3708b
  • imageBrush: Fix multi targeting issue 28436d6
  • macOS: Uno.UI.Toolkit file is missing in nuspec df5bdd7
  • MessageDialog: fixed ShowAsync not handling strings with escaped characters properly on wasm e75c346
  • msal: add support for macOS e8cca79
  • msal: Remove annoying package references for Uno.UI.MSAL/Uno.WinUI.MSAL 3dcd2b6
  • msal: Uno.UI.MSAL dependencies were wrong. 72085d1
  • NavigationView: unable to select first menuitem after selecting Settings item-android 03aba47
  • [Wasm] Adjust for newer bootstrapper update to include app base path 9f9e044
  • Adjust for double splashscreen images 9ba1537
  • Restore the support of the UNO_BOOTSTRAP_APP_BASE 7d5d17a
  • Android: Support for number leading and invalid characters in android resource names 9c0517a
  • ApplicationDataContainer: Update WebAssembly storage to use javascript localStorage ab8d2a0, closes #2923
  • codegen: double assignments from implicit content+localization 091df49
  • ComboBox: Correctly update CommonStates on apply template to fix disabled ComboBox visual state not appearing (for all platforms) 4515f0f
  • dotnet_new: Fix wasm head is not added to the existing solution 5ffae54
  • ElevatedView: Fix ElevatedView not showing in UWP 9435b34
  • hotreload: Adjust FileSystemWatcher for updated xaml files d2e144a, closes #2829
  • layout: [iOS] Don't layout collapsed views 667cceb
  • lottie: On Wasm, using the PlaybackRate on a system using a comma insteaf of a dot (mostly european languages) could lead to non-working Lottie animation. 78e2b8a
  • lottie: On Wasm, when a Lottie animation were started (.Play()) before being loaded, a concurrency issue was preventing the animation from starting once loaded. 01a4bdd
  • macOS: Grid inner control display text fb0b834
  • pointers: [WASM] Fix negative pointer id on safari for iOS prevents pointers events 3dd167c
  • remotecontrol: Failsafe for Uno.UI.RemoteControl when referenced in UWP projects e6f1f9f
  • resources: Restore retrieval of system resources from ResourceDictionary adc1c93
  • Selector: Fix SelectionChanged / SelectedItem ordering to align with UWP 6598a41
  • SplitButton: Use new keyword on Android only 7f7c7e7
  • SplitView: Apply clipping to right pane e6ae8f7
  • styles: [iOS] Apply styles root-first on adding view to live tree fc9bda9
  • styles: [WASM] Ensure OnLoading is called for children added in Loaded b2e152a
  • styles: [WASM] Make GridLength TypeConverter available 8c9ec7e
  • styles: [WASM] Set Application.Current synchronously 21201cc
  • styles: Add MergedDictionaries first 5fa5437
  • styles: Add missing DatePicker and TimePicker resources 3c7f496
  • styles: Add UWP DatePicker Style d8aac58, closes #188
  • styles: Apply LightDismissOverlayBackground correctly as theme resource 7ca1638
  • styles: Delay Style application until Xaml parsing completes 5658ae5
  • styles: Do case-insensitive comparison for ResourceDictionary.Source 5a00872
  • styles: Fix AppBar system resource resolution 7ca7c45
  • styles: Fix default style precedence over inheritance d107c70
  • styles: Fix duplicate assignation of inline Style 3f11f82
  • styles: Fix typo in CheckBox style a7cd797
  • styles: Initialize theme dictionaries before main body 0b37a52
  • styles: Lazilly initialize Styles in ResourceDictionary b664dd3
  • styles: Make ThemeDictionaries a ResourceDictionary 6bccf63
  • styles: Re-enable native Styles support 6b60e26
  • styles: Remove duplicate entries in SystemResources.xaml 4a17719
  • styles: Support conditional namespaces when no Ignore defined 8cab67b
  • styles: Support lexically-forward references in local Resources declarations 91dce9c
  • systemresource: SystemErrorTextColor was not of right color on Light theme (yellow instead of red). 9d167f5
  • textblock: Apply default FontSize 9426327
  • Theme: Observing theme on WASM now works 5b0385d
  • UserControl: Attached properties are now set on UserControl itself, not the first child 8c1c42c, closes #3243
  • Adjust UWP sample head d330404
  • Avoid samples app crashing when favorites can't be deserialized 9b2deee
  • Fix invalid using due to merge conflict 1c17650
  • Remove arbitrary 5 seconds delay workaround for iOS 704f52e
  • vsix: Adjust Library targets frameworks order to improve intellisense experience on Windows 0bb5577
  • winui3: Removed Microsoft.System namespace for non-WinUI3 output. a174979
  • XamlFileGenerator: Fully qualify more symbols 12500a8
  • scrollViewer: [Skia] Fix default style of ScrollBar 2006f3e
  • scrollViewer: [WASM] Remove deprecated css classes 6560377
  • scrollViewer: Coerce the scroll mode with the visibility and hide native SB when managed used. f19e564
  • scrollViewer: Update default style of ScrollViewer and enable managed scroll bars for WASM and Skia 57542c9
uno - 2.4.0

Published by jeromelaban over 4 years ago

This exciting new release is all about enabling development on macOS and making apps for macOS!

We've been working on this for a while now, and with the help of contributors (thanks @MartinZikmund!), we're now announcing the preview of Uno's macOS support.

To validate that our macOS support is taking shape, we ported over the Uno Calculator over, and it's now available on the mac App Store.

There are lots to do to get to the full potential of macOS through Uno's abstractions, yet it will allow you to start developing for macOS.

To create a new application with Uno in Visual Studio for mac:

  • Open a terminal

  • Type the following to install the Uno templates:
    dotnet new -i Uno.ProjectTemplates.Dotnet::2.4

  • Type the following to create a new project:
    dotnet new unoapp -n MyUnoApp

  • Open the project in Visual Studio

To build for each platform:

  • For macOS:

    • Right click on the macOS project, then Set as startup
    • If “My Mac” is not selected in the top bar, make sure to select “Debug | iPhone Simulator” in the selector
  • For iOS:

    • Right click on the iOS project, then Set as startup
    • In the configuration selector, instead of Debug, select Debug | iPhoneSimulator
  • For Android:

    • Right click on the Android project, then Set as startup
    • If your android device or simulator does not appear in the list, use the Debug configuration.

MacOS Implementation Details

The implementation of the macOS support is Uno is heavily based on the iOS support. The reason for this is UIKit for iOS being very close to AppKit on macOS. This allowed us to reuse large portions of the code from iOS and adjust to fit macOS’s behavior.

Yet, there are some very subtle differences in the implementation though, where methods such as UIKit.SizeThatFits() or UIKit.SetNeedsLayout() are either absent or behaving very differently. That may be why you’ll notice parts that need so fit and finish and we encourage you to open issues on our GitHub repo.
You may ask why we did not choose to go the Catalyst route, and you’d be right. The main reason is the lack of support for Catalyst from Xamarin, and if you want to chime in this issue if this is of interest to you.

At this time, and contrary to what’s available for iOS, debugging and deploying a macOS app must be done through Visual Studio for mac, while only building is possible in Visual Studio 2019 for Windows. This feature is missing from the Xamarin tooling, and if you want that support to be added, you can vote on this issue on the Visual Studio Community site.

Features

  • macOS: Add support for Localization (a77611c)
  • macOS: Enable macOS template from VSIX (bd6fbce)

Bug Fixes

  • dotnet_new: Adjust default active projects in VS for mac (ec2de29)
  • dotnet_new: Fix project guids duplicates causing issues in VS4mac (1ef6b78)
  • macos: Missing mac platform for Uno.UI.RemoteControl (1d57cc2)
  • xbind: Possible invalid type cast in two-way mode (b952235)
  • xbind: Fix static member access in DataTemplate (d3c70c3)
uno - 2.3.2

Published by jeromelaban over 4 years ago

This release focuses on adding the support for Android10 and AndroidX, WinUI's RadialGradientBrush and ProgressRing, Prism Library, and a number of bug fixes that you can see in the change log below.

Using the API level 29 allowed us to review our TextBlock implementation for Android and replace some reflection code required to access hidden APIs for MaxLines by official APIs that are now available. While being safer going forward, this approach also provides performance gains for this crucial control.

As the Google Play store won’t accept applications built for Android 8 (SDK 27) since November 2019, we’re removing support for that SDK to simplify our codebase and devops pipelines. To use Uno 2.3 or higher, your application needs to target Android SDK 28 (android 9) or 29 (Android 10).
If your application makes explicit use of support libraries, you’ll need to update those to Android X, and there’s some good documentation for it. Shout out to the Xamarin team, their migration tooling worked really well.

Among other notable changes:

The Uno.Wasm.Bootstrapper 1.2 has been released and removes the unfriendly use of “DotNetCliToolReference” that could not be updated via the Visual Studio interface. It includes all the recent improvements such as Windows AOT, Visual Studio 16.6 debugging, .NET interpreter performance improvements, macOS and Linux support, and Visual Studio Code support.

To upgrade from previous versions of the bootstrapper:

  • If you had a <DotNetCliToolReference … /> line in your csproj file, remove it
  • Add a nuget reference to the Uno.Wasm.Bootstrap.DevServer using the Nuget Package manager

Features

  • Add support for Android10 and AndroidX 7b05b51
  • focus: Add support for FindFirstFocusableElement 66c514b
  • focus: Add support for FindLastFocusableElement 2049304
  • gradient: [Wasm] Added support for gradient text 92aa150
  • gradient: Added FallbackColorWithOpacity. d834088
  • gradient: Added Radial Gradient for Android 171f9e4
  • gradient: first working implementation of RadialGradient on WASM fe5d86c
  • gradient: RadialGradientBrush for iOS be6d8af
  • lottie: [Android] Added Progress, IsPlaying & Duration 179c2cc
  • lottie: Allow loading of Lottie files from embedded resources. a211406
  • progressring: First implementation of WinUI 2.4 ProgressRing. 00df9d8
  • progressring: Transposed C++ code from WinUI 06621fd
  • Added NotImplemented Attribute for TopAppBar and BottomAppBar ccfa190
  • Update feature availability for the other platforms fc06be3
  • lottie: [iOS] Added support for Progress, IsPlaying & Duration 9e11da1
  • lottie: [Wasm] Added Progress, IsPlaying and Duration c0887fb
  • Xml: Implemented Windows.Data.Xml.Dom APIs 6f901e1
  • Add support for Prism library dotnet new template 18cccbb
  • Removed conditional compilation for NotImplemented attributes 6362cfb
  • Support WebView.DocumentTitle on macOS 0f54709
  • (macOS) Add CurrentOrientation support 1d0a89a
  • (macOS) Add default NativeOrientation dfd6cea
  • (macOS) Add default property state to the Style a52d326
  • (macOS) Add delegate for PasswordBox 7eee1ef
  • (macOS) Add IsPasswordRevealButtonEnabled for PasswordBox b249253
  • (macOS) Add SecureTextBox for PasswordBox 7e826cb
  • (macOS) Update PasswordBox implementation a087a21
  • cursor: Support PointerCursor on macOS 057f6bd
  • gradient: Added macOS support for RadialGradientBrush 3c93e6e
  • PackageId: macOS support 062ea5d
  • Support ComboBox on macOS 3ede85c

BREAKING CHANGES

  • All targets are now using the AndroidX support libraries. If your
    application uses explicit references to support libraries, you'll to upgrade
    those as well.

Uno upgraded from:
- Xamarin.Android.Support.v4
- Xamarin.Android.Support.v7.AppCompat
- Xamarin.Android.Support.v7.RecyclerView

To :
- Xamarin.AndroidX.Legacy.Support.V4
- Xamarin.AndroidX.AppCompat
- Xamarin.AndroidX.RecyclerView
- Xamarin.AndroidX.Fragment

Bug Fixes

  • [MacOS] Fix event handler not invoked in the sample app 9bbfa1a
  • Fix support for TextBlock under Android 10 fdc7327, closes #2016
  • android: Uno template for Android now reacts to all ConfigurationChanges 859da96
  • android: various issues with readonly textblock 2dd4bc8
  • android_geolocator: Request and validate permissions ed0d4e3
  • animation: [iOS] Fix InvalidCastException when app resumes while animation is active 32dba9c
  • commandbar: [iOS] Update CommandBar layout when Visibility changes fc18909
  • dotnet_new: Fix automated uno packages version update during CI 87d0798
  • dotnet_new: Update the publisher format 79f41dc
  • flyout: Fix NRE from trying to close uncreated Popup in Flyout 18f0191
  • gradient: Apply Log().IsEnabled for logging in generated code. f383dc6
  • gradient: Fixed default values for Radius & Origin on RadialGradientBrush. d2d60a7
  • gradient: LinearGradientBrush now derives from GradientBrush. ae1a6ad
  • gradient: Removed [NotImplemented] on BrushMappingMode. 7f3c53c
  • lottie: Fixed missing dependencies in NuGet package. 8d4012f
  • lottie: improve assembly scanning. 326251e
  • lottie: Updated Lottie-web to from 5.4.4 to 5.6.8 c49db32
  • macos: Adjust default dotnet new sln configurations 76170a6
  • mediaplayer: [iOS] Fix exception from MediaPlayerPresenter returning infinite desired height 3fd116d
  • mediaplayer: Arranges the player even if the video ratio is of 0 as this will lead to a real video ratio. 0ac5e31
  • mediaplayer: Fix invalid stop of the player when toggling the fullscreen mode. efe2e89
  • mediaplayer: NRE when the surface is destroyed but the player has already been released. e29a537
  • mediaplayer: Resets the MediaPlayer and its surface when setting its source to null. 70b79e8
  • pointers: [iOS] Try to re-use pointer ID in order to detect DoubleTap 44df20e
  • progressring: Fixed bug on Wasm where ProgressRing was stuck. c9d0ea0
  • shapes: [WASM] StrokeDashArray is not published to native element 48b971f
  • solidcolorbrush: [ANDROID][WASM] Color brushes added to Thumbtint, TrackTint, Fill, and Stroke missing opacity ff059c3
  • xBind: Fix x:Bind parsing when ignorable directive is not present d17bd91
  • (macOS) rename file name to match with class 9698914
  • Add changes to packagediff ignore file 3f34de8
  • Adjust screenshot comparer with missing ZipFile dependency 471a65d
  • Adjust Uno.UI and Uno.UI.RemoteControl references in macOS template e6ba3da
  • Adjust WebAssembly detection after a breaking change in RuntimeInformation bd00e78
  • build error on CI 6fffaa8
  • ci build - make field readonly c1c5eb3
  • Fix http: samples working on macOS c0217b5
  • Fix incorrect XAML parsing of x:Bind with ConverterParameter abb43f9, closes #3049
  • Fix the wasmxfhead template creation was using blank uno app f5fe5e6
  • Improve NativeFramePresenter.iOS implementation to fix concurrency issues. 7985a91
  • property signature 9eca43a
  • Remove explicit DependentUpon from BlankPage.vstemplate 6ed24a5
  • popup: Update position when VerticalOffset changes 239cc2f
  • RemoteControl: Make Wasm WebSockets dependency conditional to netstandard 2.0 c112690
  • template: Adjust default organization for UWP dotnet new app template ff5171b
  • tooltip: Place tooltip relative to mouse pointer f63617f
  • tooltip: Support views as direct TooltipService.ToolTip content 19482e8
  • Fixes symbol icon Home not shown bde78f1
  • Remove the sealed attribute from generated code (#2830) 2e80728, closes #2830
  • Updated UWP Samples app signing certificate 4180cc6
uno - 2.2

Published by jeromelaban over 4 years ago

The Uno 2.2 release is packed with new features, performance improvements and bug fixes, even if it's closely following the 2.1 release!

We're also hard at work on adding support for macOS apps (Thanks @MartinZikmund), and while we still do not have anything to announce, it's taking shape!

Among the implemented features, you'll find:

  • Support for MenuFlyout, UIElement.ContextFlyout and MenuBar
  • Support for ScrollBar
  • Add support for dotnet new unoapp and macOS templates
  • Support for Electron hosted apps
  • ImageSource.SetSourceAsync support for WebAssembly (Thanks @SuperJMN)
  • Support for ColorAnimation
  • Support for Pedometer for iOS and Android (Thanks @MartinZikmund)
  • Suppport for mouse wheel events (PointerWheelChanged) on WebAssembly
  • Support for DropDownButton from WinUI 2 (Thanks @MartinZikmund)
  • Many performance and memory updates impacting all platforms at various levels, such as giving a rough 20% improvement on controls creation on WebAssembly. A more detailed post will follow soon on that topic.
  • Support for ms-appdata paths in Image, MediaPlayer (Thanks @MartinZikmund)

Uno is now built using C# 8.0 and VS 16.5 on Azure Devops hosted agents, which means that AndroidX and Android 10 support is close by.

And finally, many of the recent updates were targeted at improving the behavior of controls in the Windows Community Toolkit, with enabling DataGrid, TabView and Expander controls. On the topic of the DataGrid, there's still lots of work to be done, particularly around performance under WebAssembly, but this release updates now make the control useable.

Features

  • [WASM] Added the ability to load images from bytes (9cfb29f)
  • Add benchmark filter (1335d7b)
  • Add MenuFlyout support (4fc3cb1)
  • Add support for dotnet new unoapp and macOS templates (a591d69)
  • Add support for UIElement.ContextFlyout (5640745)
  • focus: Raise Control.GotFocus asynchronously (21d7758)
  • add support for Electron. (a56a7d9)
  • Add support for FindElementsInHostCoordinates (6231d0b)
  • Added support for DropDownButton from MUX (de78481)
  • ARM64 support for UWP in solution template (39230e7)
  • animation: [WASM] Add fast-path for zero-duration animations (19ec739)
  • animation: Implement ColorAnimation for iOS, Android, and WebAssembly (4b6ff56)
  • animation: Support independently animating SolidColorBrush from shared resource (f6b3ce8)
  • commandbar: Add support for native CommandBar.HorizontalContentAlignment on Android. (5e6ca82)
  • focus: [WASM] Update FocusManager when browser window loses focus (3a61248)
  • pointer: [WASM] Enable support of the PointerWheelChanged event (2a0d9fb)
  • pointers: [WASM] Add support for the mouse wheel event (57ccc39)
  • pointers: Wire-up the pointer wheel event (805e527)
  • Using Uno blue accent color for WASM splash (cf4d56b)
  • scrollbar: Add support for ScrollBar (9eadb8e)
  • Async initialization of Pedometer (0e306c9)
  • DatePicker now shows picker with today selected if no date is set (deef3dc)
  • Implement the Thumb.Start horizontal and vertical offsets (9246668)
  • Implemented AppDataUriEvaluator (a6f5d43)
  • Implemented DropDownButtonAutomationPeer (a057ef8)
  • Implemented pedometer on Android (cdf2cc6)
  • Implemented Pedometer on iOS (617dd49)
  • Remove monoandroid80 (1778a75)
  • Remove the dependency on System.Xaml for .NET Core compatibility (9d8674a)
  • Support for Frame.IsNavigationStackEnabled (d268db9)
  • Support Lottie animations on iOS (17df575)
  • wasm: Add CoreDispatcher support for threading (53304d5)
  • WebView: Add DocumentTitle for Android and iOS (21ae5b2)
  • Support of DataTransfer.DataPackage.RequestedOperation (a6a1479)
  • Use C# 8.0 by default (9431fc9)
  • Using ms-appdata paths in Image, MediaPlayer (42ecf36)
  • (macOS) Add #2844 support for Image (c0d16ea)
  • (macOS) Add image Asset in Sample proj (1f465a4)
  • (macOS) Add Support for DisplayInformation (fa52844)
  • (macOS) Support for XAML HotReload on the SampleApp (6387d57)
  • [macOS] Add support for TextBox (8c99072)
  • [macOS] ScrollViewer - show scroll bar (47dfe8a)
  • [macOS] Show full samples list (f080e87)
  • [macOS] Update properties on scroll (99ad526)
  • Add support for Lottie on macOS (1b8c6e5)
  • Added DoubleAnimation, DoubleAnimationUsingKeyFrames on macOS (3eea4b2)
  • DisplayRequest: macOS support (80ce63e)
  • ListView - allow WASM/macOS implementation to be tested on iOS/Android (c22a951)
  • Share WASM ListView implementation with macOS (1c3541b)
  • Support playback rate on iOS/macOS (f21f458)

BREAKING CHANGES

  • The Uno.Xaml parser is now always used

    The System.Xaml assembly is not always available, particularly when building under .NET Core.

  • The monoandroid80 target is not available anymore.

    It has been deprecated by Google.

  • Uno is now built using VS2019 16.4

    It does not support building Xamarin iOS/Android applications with Visual Studio 2017.

    Linker errors may occur such as:

    Java.Interop.Tools.Diagnostics.XamarinAndroidException: error XA2006: Could not resolve reference to 'System.Collections.Generic.Queue`1'
    (defined in assembly 'Uno.UI, Version=255.255.255.255, Culture=neutral, PublicKeyToken=null') with scope 'mscorlib, Version=2.0.5.0,
    Culture=neutral, PublicKeyToken=7cec85d7bea7798e'.
    
  • commandbar: Alignment of native CommandBar.Content used to be Stretch/Stretch and is now aligned with Top/Left on UWP.

    Use CommandBar.HorizontalContentAlignment and first element of content's VerticalAlignment to control.

Performance Improvements

  • [Wasm] Adjust FrameworkTemplatePool to keep hard refs to pooled instances (8881200)
  • [Wasm] Adjust GC parameters for the Samples app. (eacc8b7)
  • [Wasm] Cache Marshal.SizeOf calls in TSInteropMarshaller (a967c22)
  • [Wasm] Disable try/finally block in DefaultArrayPool. (fce040a)
  • [Wasm] Ensure UIElement instances release their children (1f48c6b)
  • [Wasm] Improve IsHitTestVisible (9f5968d)
  • [Wasm] Remove pass-through try/catch block in InvokeJSUnmarshalled (3175803)
  • [Wasm] Set Rectangle arrange SVG position using binary invocation (e4aade2)
  • [Wasm] Use strings for js method dispatch table (a2b1f63)
  • Aggregate DependencyObject finalizers (32041c2)
  • Don't reflect on UnsetValue (27e0fc1)
  • Improve TypeScript DOM classes list construction (cea17c7)
  • Improve Wasm color conversion ToHexString (018dcdd)
  • Initialize FrameworkElement style if new parent is not null (90d0421)
  • Reduce memory allocations for inherited properties management (d659c3d)
  • Reduce memory pressure during object creation (50d99e6)
  • Use Array pooling in DependencyPropertyDetailsCollection (c3f0978)
  • Use strings for javascript object maps lookups (58cee71)
  • grid: Reduce memory pressure caused by GCHandle (5183d87)
  • animation: [WASM] Add fast-path for zero-duration animations (19ec739)

Bug Fixes

  • ".Uno" in project names results in build errors (f3580b4)
  • [Android/iOS] Layouter - Clipping were not properly applied. (245d255)
  • [iOS] Restore original ComboBox.IsPopupFullscreen behavior (5ac0026)
  • [macOS] Add NativeCtorGenerator support (210b30b)
  • [macOS] Adjust native styles defaults (107f68d)
  • [macOS] Create Layer for ArbitraryShapeBase (a367030)
  • [macOS] Tentative performance update for NSTextStorage. (31bd64f)
  • [uap10] Fix ElevateView Generic.xaml packaging (1c48cfd)
  • [Wasm] Adjust linker settings for FocusManager.ReceiveFocusNative (7524d6e)
  • [WASM] Fix clearing the Data of a Path (7b4bcb4)
  • TextElement.Background cannot be set to null (d6dfec8)
  • Add internal Control.UpdateVisualState (6520e1e)
  • Add support for ItemCollection.Size (4c7d3f1)
  • Added missing methods to DiffIgnore (9715429)
  • Adjust DependencyObjectGenerator for macOS Support (bc2841f)
  • Adjust measure/arrange phase (c8f9917)
  • ApplicationData.Current.[LocalFolder|RoamingFolder] throws a NRE exception (7c14c5a)
  • Avoid crash in Lottie on Android (7a45a80)
  • BREAKING CHANGE Thumb Drag events args changes are no longer cummulative! (ad93fd5)
  • C# 8.0 configuration (b77bc5c)
  • change BuildVersionCodes.P to integer (28) (98fd65a)
  • Change ExpandCollapsePatterIdentifiers not to throw (a549e87)
  • Changed IsNavigationStackEnabledProperty to property (7de5135)
  • DatePicker dismiss + DatePicker styling (cb4d6b9)
  • DatePicker text parts width (8894e25)
  • DisplayInformation UITest (32a307d)
  • FindName cannot dig into UIElement.ContextFlyout and Button.Flyout (1aa9852)
  • Fix no pointers events on WASM for elements nested in a manipulation aware element. (fcb7178)
  • Fix Shapes hit test (was requiring a Background ... while this property is not event on the WinUI API) (f625c31)
  • Fixed build issue (0a5d1d5)
  • Fixed DefaultPreferredBodyFontSize to SystemFontSize (125a15f)
  • Fixed ReportInterval in existing Android sensors (cfd94b2)
  • Fixed xmlns for UWP (d73ae26)
  • flyout cannot be light dismissed by clicking outside of its content (cb44458)
  • Frame.Navigating can cancel (d5bec47)
  • GetRelativePath is not available in Standard 2.0 (5580d8b)
  • Improved handling of URI host (d78f1f3)
  • invalid redondent cast ... (5b74c54)
  • ListView was throwing an exception if changing the SelectionMode while element were selected (e0289f2)
  • Log exceptions domain and TaskScheduler in the SamplesApp (0e77b9d)
  • make sur eto not filter ou event for implicit captures (425cf4b)
  • Make sure VisibleBoundsPaddings continue to work after a resize. (c88ab58)
  • Make UIElement KeyboardAccelerators an intenal DP (d7e5502)
  • MenuBar now supports dark theme (508598b)
  • MenuBarItem IsFlyoutOpen and Invoke are public (126f837)
  • MessageDialog buttons callbacks not being invoked on macOS. (206dc8e)
  • Move Lottie sample animations for Android (67844f7)
  • null Fill appears black on WASM + fix the hit testing accordingly (6a8b96e)
  • path defect caused by known vswin bug (#1349) (82f9fca)
  • Prevent Shapes (mapped to svg) to stoll the pointer events when they are not visible (fd4e1ab)
  • Properly set Lottie animation properties on Android (06cb7d2)
  • android: Changed the logic of previous commit. (6f25d6a)
  • android: Fix for bug https://github.com/unoplatform/uno/issues/2879 (c4dd713)
  • android: Invoke .forceLayout() only when appropriate. (c4d26e3)
  • android: screenshot issue with status bar (25010dd)
  • android: shapes samples were crashing because Points were not populated. (58bc764)
  • animation: Correctly report animations targeting SolidColorBrush.Color as independent (2b0ffd8)
  • articles: fix broken paths to images in .md files (0109740)
  • brush: [WASM] Update FrameworkElement.Background when SolidColorBrush.Color changes (8066a19)
  • codegen: BindableMetadata properly globalizing generic type paremeters (d0f62c5)
  • commandbar: [iOS] Fix text in CommandBar title not appearing after navigation (3f23de0)
  • ContentDialog: Content dialog can be closed if Closing event was canceled (4f8e93e)
  • ContentPresenter: [Wasm] ContentPresenter background is not applied properly (b7a2d71)
  • elevatedview: Make sur the ElevatedView recopy its TemplatedParent. (e894ffb)
  • elevatedview: Patch a TemplateBinding problem. (ede532c)
  • focus: [Android] Fix NRE when calling ProcessFocusChanged() with no inner TextBoxView (fdf44ff)
  • focus: [WASM] Adjust native focus application for TextBox (c6a55b1)
  • image: wrong measure for images on iOS (4f825ba)
  • images: Images with margin were returning wrong measure size. (917cee0)
  • ios: UIDatePicker would sometimes offset day/month/year when changing other parts (ca19267)
  • layouting: Ensure negative Margin doesn't push DesiredSize below 0 (db71724)
  • perf: [WASM] Listen to focus changes at top level only (cc73d46)
  • point: Fix comparing a Point to null NRE (5899731)
  • pointers: Fix UI tests for wasm (f928c55)
  • pointers: Restore the NotImplemented flag for platforms other than WASM (057e8a9)
  • pointers: Restore the WinUI parameter name for pointer overloaddable methods (9c4cff6)
  • reg: Fix dotnet new templates not registered properly (527e165)
  • Slider: macOS vertical thumb movement is flipped (36fd57e)
  • tooltip: Fix tooltip may appear if the control is unloaded (27b4a44)
  • visibleboundspadding: .SizeChanged only on iOS (543dd66)
  • visibleboundspadding: bring back handler on LayoutUpdated (67d0ed2)
  • Removed unusued fields on FrameworkElement. (3f10ca0)
  • repository user name (cb688cf)
  • resolved build by removing dangling comma (59739c3)
  • Restore the protected virtual OnChildrenChanged in Shape (639eb8c)
  • Slider value invalid when tapping over the line. (0113f8b)
  • SvgElement now inherits from UIElement, so it won't request a FE.Background to be HitTestVisible (83eb321)
  • wasm: DatePicker rendering (01ad446)
  • Transform to visul now takes in consideration render trasnform origin (eca0314)
  • VisibleBoundsPadding causing text alignment problem on iOS. (d349323)
  • VisibleBoundsPadding was setting Padding too late. (e4c5e1a)
uno - 2.1

Published by jeromelaban over 4 years ago

Uno Platform 2.1 release is packed with over 50 new features allowing for increased productivity as well as getting you up and running with Surface Duo. In addition to bigger milestones such as x:Bind, the TwoPaneView and NumberBox controls we also shipped another 50 new features and closed 45 issues you raised.

Among many other updates:

  • Support for x:Bind functions (with BindBack, DefaultBindingMode)
  • Support for the Surface Duo has been added and the TwoPaneView control
  • Support for the WinUI 2.3 NumberBox control
  • ElevatedView in the toolkit to add shadows around controls
  • Support for Grid.ColumnSpacing and Grid.RowSpacing
  • Multitouch pointers support
  • Support for UIElement.RightTapped and Holding

You'll also notice some progress on the macOS support, but nothing concrete to share at this point.

Big thank you to all our contributors for the support !

Here's the full change log:

Features

  • Added new ElevatedView in the Uno.Toolkit to provide elevation & rounded corners on all platforms
    (not supported on Windows yet, because Uno needs to target framework 10.0.18362.0)
  • [Android] Support for Application.Current.Exit
  • Support for Windows.Storage.FileProperties.BasicProperties.DateModified
  • Added CornerRadius support to more default styles to match UWP (for list of updated styles see PR [#2713])
  • Support for FontIcon on macOS
  • Support for PhoneCallManager.ShowPhoneCallUI on macOS
  • Support for full screen mode on macOS
  • Support for ShowComposeSmsMessageAsync on macOS
  • Support for Flyout on macOS
  • Support for HingeAngleSensor for Surface Duo
  • Support for Geolocator on macOS
  • Support for Clipboard get/set Text content on macOS
  • Support for ApplicationView.Title on Android and macOS
  • Support for AnalyticsInfo on macOS
  • Support for TryEnterFullScreenMode and ExitFullScreenMode on WebAssembly
  • Support for MessageDialog on macOS
  • [Android] support of KnownFolders.MusicLibrary and VideosLibrary
  • Add support for StorageFile.DateCreated
  • Support for ApplicationView.IsScreenCaptureEnabled on Android
  • Add support for StorageFile.DeleteAsync()
  • Support for PointerDown, PointerUp PointerEntered, PointerExited and PointerMoved events on macOS
  • Support for Launcher API on macOS, support for special URIs
  • Support for EmailManager.ShowComposeNewEmailAsync
  • Add support for StorageFolder.CreateFileAsync(string path)
  • Add support for ApplicationViewTitleBar.BackgroundColor on WASM
  • Add support for Automation SetDependencyPropertyValue in Uno.UITest
  • Added support for using a string value in a StaticResource when using `CreateFromStringAttribute'
  • [Android] Adds support for FeatureConfiguration.ScrollViewer.AndroidScrollbarFadeDelay
  • Add support for Grid.ColumnSpacing and Grid.RowSpacing
  • Add clarification in documentation for adding automated UI tests
  • Add support for Popup.LightDismissOverlayMode, as well as DatePicker.LightDismissOverlayMode and Flyout.LightDismissOverlayMode. To modify the background color of the Overlay see Popup.md, DatePicker.md, TimePicker.md and Flyout.md
  • TransformToVisual now returns a real transform to convert coordinates between views (was only returning a translate transform to offset the origin of controls)
  • Multiple pointers at same time on screen (a.k.a. Multi-touch) are now supported
  • Add support for WinUI 2.3 NumberBox
  • Add support of the UIElement.RightTapped event (The context menu won't appear anymore on WASM, except for the TextBox)
  • Add support of the UIElement.Holding event
  • [MacOS] Support for ScrollViewer
  • [MacOS] Support for LinearGradientBrush
  • Add support for TwoPaneView control.
  • Add support for ApplicationView.GetSpanningRects
  • Add base support for API Extensibility through Uno.Foundation.Extensibility.ApiExtensibility and ApiExtensionAttribute
  • Add support for Surface Duo through the Uno.UI.DualScreen package
  • Add support for enums in x:Bind functions and BindBack
  • Add XamlReader support for Primitive static resources
  • [Android] Add support for non-native Popup by default. Can be enabled through FeatureConfiguration.Popup.UseNativePopup set to false (See #2533 for more details)
  • Add template tags for the VS2019 VSIX template search experience
  • [iOS] #2746 Fix border thickness when a corner radius is set
  • [Android] #2762 ProgressRing wasn't displaying inside a StackPanel
  • #2797 Stack overflow in ListView when changing SelectedItem to and from invalid value
  • [Android] #2761 Control with AreDimensionsConstrained and Margin set not measured correctly

Breaking changes

Bug fixes

  • [iOS] Applying a <RenderTransform> on an image was producing an incorrect layout result.
  • Add support for CornerRadius in default ComboBox style
  • Fix for samples app compilation for macOS
  • [#2465] Raising macOS Button Click event
  • [#2506] DesignMode.DesignMode2Enabled no longer throws (is always false on non-UWP platforms)
  • [#915] FontFamily values are now properly parsed on WebAssembly, updated docs with new info
  • [#2213] Fixed ApplicationData on MacOS, added support for LocalSettings
  • Made macOS Samples app skeleton runnable (temporarily removed ApplicationData check on startup, fixed reference), added xamarinmacos20 to crosstargeting_override sample
  • [#2230] DisplayInformation leaks memory
  • [WASM] Shapes now update when their Fill brush's Color changes
  • [WASM] Fix bug where changing IsEnabled from false to true on Control inside another Control didn't work
  • [Wasm] Add arbitrary delay in Safari macOS to avoid StackOverflow issues
  • #2227 fixed Color & SolidColorBrush literal values generation
  • [Android] Fix bug where setting Canvas.ZIndex would apply shadow effect in some cases
  • #2287 Vertical ListView containing a horizontal ScrollViewer: horizontal scrolling is difficult, only works when the gesture is perfectly horizontal
  • #2130 Grid - fix invalid measure when total star size is 0
  • [iOS] Fix invalid image measure on constrained images with Margin
  • [#2364] fixed missing Xaml IntelliSense on newly created project
  • ViewBox no longer alters its child's RenderTransform
  • [#2033] Add Missing LostFocus Value to UpdateSourceTrigger Enum
  • [Android] Fix Image margin calculation on fixed size
  • [Android] Native views weren't clipped correctly
  • [Android] Border thickness was incorrect when CornerRadius was set
  • [iOS] #2361 ListView would measure children with infinite width
  • [iOS] Fix crash when using ComboBox template with native Picker and changing ItemsSource to null after SelectedItem was set
  • [#2398] Fully qualify the MethodName value for `CreateFromStringAttribute' if it's not fully qualified it the code
  • [WASM] Fix bug where changing a property could remove the required clipping on a view
  • #2294 Fix TextBox text binding is updated by simply unfocusing
  • [Android] Fix unconstrained Image loading issue when contained in a ContentControl template
  • Enable partial NavigationView.ItemSource scenario (https://github.com/unoplatform/uno/issues/2477)
  • [Wasm] Fail gracefully if IDBFS is not enabled in emscripten
  • [#2513] Fix TransformGroup not working
  • [#1956] Fis iOS invalid final state when switching visual state before current state's animation is completed.
  • Fix Selector support for IsSelected (#1606)
  • [Android] 164249 fixed TextBox.Text flickering when using custom IInputFilter with MaxLength set
  • [MacOS] Fix exceptions when modifying UIElementCollection, layouting view with null Layer
  • Fix invalid conversion when using ThemeResource (e.g. Color resource to Brush property)
  • Fix XamlBindingHelper.Convert double to GridLength
  • [Android] Adjust TextBlock.TextDecorations is not updating properly
  • Adjust XamlBindingHelper for GridLength and TimeSpan
  • Add missing ListView resources
  • #2570 [Android/iOS] fixed ObjectDisposedException in BindingPath
  • #2107 [iOS] fixed ContentDialog doesn't block touch for background elements
  • #2108 [iOS/Android] fixed ContentDialog background doesn't change
  • #2680 [Wasm] Fix ComboBox should not stretch to the full window width
uno - 2.0.528

Published by jeromelaban almost 5 years ago

This release is bits that were announced at UnoConf in September, and it's a big one! It contains lots of new features, improvements, and bug fixes.

This release is now a community effort, thanks to Hacktoberfest, an also to community contributors such as @MartinZikmund, @pkar70, @kakone, @pdecostervgls, @gevart and all the Uno Team people!

Note: To install the latest Visual Studio Extension to use XAML Hot Reload, you'll need to do it from the release files below for the next few days, as the release there is still 1.45. We're discussing publication issues with the Microsoft VS Marketplace team about that, we'll update the release notes accordingly. The VSIX is now updated in the marketplace!

XAML Hot Reload for iOS, Android and WebAssembly

XAML Hot Reload is now supported, giving ability to design the UI of a running application directly from Visual Studio. Best of all, it can update multiple platforms at once!

Head to this guide to get started.

Dark mode support

ThemeResources support to enable Dark Theme has been included, with automatic detection on iOS, Android and WebAssembly. It's not yet supporting live update from one theme to another, but this is coming soon!

You can view the results of this support in the Uno Calculator (WebAssembly, App Store and Play Store), in the Xaml Controls Gallery WebAssembly App, and the Windows Communit Toolkit WebAssembly App.

Pointer and Manipulation events

This release adds extensive support for Pointer events and Manipulation events, paving the way for more advanced controls support such as data grids, and other interactive controls.

GitPod WebAssembly development support

GitPod enables very interesting scenarios for friction-less development with Uno, as well as contributing to Uno. Because there is nothing to install, and that everything runs in your browser, it lowers the barrier to entry for developing, as there's no step of "setting up the environment" that can take such a long time on some cases.

GitPod also enables live PR validations, with the pre-build features, allowing to test the live bits of a PR inside of a running VS Code instance, simply by clicking on the "review in GitPod" button in every PR.

Get started [here with this guide].(https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-gitpod.md).

Visual Studio 4 Mac compatibility for iOS and Android

Building an app for iOS and Android in Visual Studio for mac is now supported, with initial support for XAML intellisense, in release 8.4.

Uno Platform WebAssembly Renderers for Xamarin.Forms

This release also enables the support for WebAssembly Renderers for Xamarin Forms 4.3.

Other additions

  • Large improvements in UIElement clipping behavior
  • Support for hardware APIs such as Windows.Devices.Lights.Lamp, Geolocator, Gyrometer, Magnetometer, Accelerometer, VibrationDevice, Barometer
  • Support for system apis JumpList, PhoneCallManager, DisplayInformation
  • PathGeometry and PolyLine support for WebAssembly
  • XAML type conversions through CreateFromStringAttribute
  • Support for ContentDialog, PersonPicture, TooltipService, ToggleButton.IsThreeState and TextBox.IsReadonly (WebAssembly)
  • VisualState setters support for static, theme resources and template bound values

Lots of work has been done to make Uno more reliable, with the inclusion of UI and on-device unit testing for iOS, Android and WebAssembly as part of the PR process. Each PR is now validated by running an extensive set of tests through the uno.uitest cross-platform UI Testing library.

This release also includes updates that enable support for ReactiveUI (samples) and VLC

Here's the full list:

Features

  • #2029 Support for MenuFlyoutItem.Click
  • support /[file]/[name] format in ResourceLoader.GetForCurrentView().GetString()
  • [#2039] Added support for Xaml type conversions using CreateFromStringAttribute.
  • [#] Support for Windows.Devices.Lights.Lamp on iOS, Android.
  • #1970 Added support for AnalyticsInfo properties on iOS, Android and WASM
  • [#1207] Implemented some PackageId properties
  • #1919 Support for PathGeometry on WASM.
  • Support for Geolocator on WASM, improvements for support on Android, iOS
  • #1813 - Added polyline support for WASM and samples for all shapes
  • #1743 - Added a change to make the MarkupExtensionReturnType optional
  • Added Dark and HighContrast theme resources, reacts to Dark/Light theme on iOS, Android and WASM automatically during the startup of the app if RequestedTheme is not set in App.xaml
  • Support for Gyrometer on Android, iOS and WASM
    • ReadingChanged
    • ReportInterval
  • Support for Launcher.QueryUriSupportAsync method on Android and iOS
  • #1493 - Implemented the Windows.Input.PointerUpdateKind Enum.
  • #1428 - Add support for horizontal progressbars to BindableProgressBar on Android.
  • Add support for Windows.Devices.Sensors.Magnetometer APIs on iOS, Android and WASM
    • ReadingChanged
    • ReportInterval
  • Add support for Windows.UI.StartScreen.JumpList APIs on Android and iOS
    • Includes Logo, DisplayName and Arguments
    • The activation proceeds through the OnLaunched method same as on UWP
  • Refactored DrawableHelper to the Uno project
  • Add full implementation of Windows.UI.Xaml.Input.InputScopeNameValue on all platforms.
  • Add support for Windows.Devices.Sensors.Accelerometer APIs on iOS, Android and WASM
    • ReadingChanged
    • Shaken
    • ReportInterval
  • Align ApplicationData.Current.LocalSettings.Add behavior with UWP for null and repeated adds
  • Add support for Windows.ApplicationModel.Calls.PhoneCallManager
  • Add support for Windows.Phone.Devices.Notification.VibrationDevice API on iOS, Android and WASM
  • Basic support for Windows.Devices.Sensors.Barometer
  • Support setting Style inline (e.g. <TextBlock><TextBlock.Style><Style TargetType="TextBlock"><Setter>...)
  • [Wasm] Add support for DisplayInformation properties LogicalDpi, ResolutionScale, ScreenWidthInRawPixels, RawPixelsPerViewPixel , and ScreenHeightInRawPixels¸
  • Permit DependencyProperty to be set reentrantly. E.g. this permits TextBox.TextChanged to modify the Text property (previously this could only be achieved using Dispatcher.RunAsync()).
  • Add support for filtered solutions development for Uno.UI contributions.
  • 132984 [Android] Notch support on Android
  • Add support for Android UI Tests in PRs for improved regression testing
  • Add static support for ThemeResources: Application.Current.RequestedTheme is supported
    • Dark and Light are supported.
    • Custom Themes are supported. This let you specify HighContrast or any other custom themes.
      (this is a feature not supported in UWP)
      // Put that somewhere during app initialization...
      Uno.UI.ApplicationHelper.RequestedCustomTheme = "MyCustomTheme";
      
    • FrameworkElement.RequestedTheme is ignored for now.
    • Should be set when the application is starting (before first request to a static resource).
  • Prevent possible crash with MediaPlayerElement (tentative)
  • Add support for ContentDialog, including Closing and Closed events
  • Permit DependencyProperty to be set reentrantly. E.g. this permits TextBox.TextChanging to modify the Text property (previously this could only be achieved using Dispatcher.RunAsync()).
  • Implement TextBox.TextChanging and TextBox.BeforeTextChanging. As on UWP, this allows the text to be intercepted and modified before the UI is updated. Previously on Android using the TextChanged event would lead to laggy response and dropped characters when typing rapidly; this is no longer the case with TextChanging.
  • [WASM] ComboBox's dropdown list (CarouselPanel) is now virtualized (#1012)
  • Improve Screenshot comparer tool, CI test results now contain Screenshots compare data
  • Updated Xamarin.GooglePlayServices.* packages to 60.1142.1 for Target MonoAndroid80
  • Updated Xamarin.GooglePlayServices.* packages to 71.1600.0 for Target MonoAndroid90
  • <ContentPresenter> will now - as a fallback when not set - automatically bind to
    TemplatedParent's Content when this one is a ContentControl.
    You can deactivate this behavior like this:
    FeatureConfiguration.ContentPresenter.UseImplicitContentFromTemplatedParent = false;
    
  • Add support for Selector.IsSynchronizedWithCurrentItem
  • Add support for CoreApplication.MainView and CoreApplication.Views
  • Add support for resolution of merged and theme resources from ResourceDictionary in code
  • Add non-failing StatusBar BackgroundOpacity and BackgroundColor getters
  • Relax DependencyProperty owner validation for non-FrameworkElement
  • ToolTip & ToolTipService are now implemented.
  • #1352 Add support for ThemeResources with different types (e.g.: mixing SolidColorBrush and LinearGradientBrush)
  • Add support for BitmapSource.PixelWidth and Height
  • Preliminary support for ColumnDefinition.ActualWidth and RowDefinition.ActualHeight.
  • Updated VisualTree of an app with Visibility for each items.
  • Add support for CompositionTarget.Rendering event.
  • Add support for IObservableVector<T> in ItemsControl
  • [#1559] [#1167] Wasm: make the IsEnabled property inheritable.
  • Full support of pointer events cf. routed events documentation
  • Add support of manipulation events cf. routed events documentation
  • Update CheckBox style to 10.0.17763
  • Adds the support for AutomationProperties.AutomationId
  • #1328 Basic ProgressRing implementation for WASM
  • Add support for Windows.UI.Xaml.Controls.Primitives.LayoutInformation.GetAvailableSize
  • Add support for Runtime Tests that require UI integration
  • Enable iOS UI Tests
  • Add support for PersonPicture
  • Add support for VisualState Setter data binding, static resources and complex objects
  • Clipping to bounds of control is now more similar to UWP
  • The feature flag FeatureConfiguration.UseLegacyClipping is now deprecated and not used anymore
  • XAML Hot Reload support for iOS, Android and Windows
  • Add support for GitPod Workspace and prebuilds
  • #880 Added added implicit conversion for double to Thickness
  • Add Android support for CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar to programatically draw under the status bar
  • [WASM] ScrollViewer.ChangeView is now supported
  • [Wasm] Add the ability to focus a TextBox by clicking its header
  • Add support for ToggleButton.IsThreeState and ToggleButton.Indeterminate
  • [Wasm] Add support for TextBox.IsReadonly

Breaking changes

  • TextBox no longer raises TextChanged when its template is applied, in line with UWP.
  • TextBox.TextChanged is now called asynchronously after the UI is updated, in line with UWP. For most uses TextChanging should be preferred.
  • [Android] TextBox.IsSpellCheckEnabled = false is now enforced in a way that may cause issues in certain use cases (see https://stackoverflow.com/a/5188119/1902058). The old behavior can be restored by setting ShouldForceDisableSpellCheck = false, per TextBox.
  • TextBox.Text = null will now throw an exception, as on UWP. Pushing null via a binding is still valid.
  • Projects targeting Android 8 must now use Xamarin.GooglePlayServices.* 60.1142.1 (60.1142.0 has been unlisted)
  • Projects targeting Android 9 must now use Xamarin.GooglePlayServices.* 71.1600.0
  • [iOS] UIWebView is deprecated and replaced with WKWebView (ITMS-90809: Deprecated API Usage - Apple will stop accepting submissions of apps that use UIWebView APIs . See https://developer.apple.com/documentation/uikit/uiwebview for more information.)
  • [iOS] If you set the ManipulationMode to something else than System or All, the DelaysContentTouches is going to be disabled on all parent ScrollViewer
  • [#1237] Static resources defined in App.xaml were not processed and registered properly

    This change might break the compilation for projects that define duplicate resources in other globally accessible resource dictionaries. Adjustments to remove duplicate resources may be necessary.

  • [WASM] The tranform returned by UIElement.TransformToVisual is now including scale, rotation or any custom transformation that was declard on a parent element (transform was only including translate components)

Bug fixes

  • #2093 Fix missing measurement option for polyline and polygon
  • Font size, used for ComboBoxItems, are same as in ComboBox content (not smaller)
  • #2023 Android WebView.NavigateToString doesn't throw exception even when string is very long.
  • #2020 ContentControl no longer display the datacontext type when ContentTemplate and content are empty
  • #1987 Missing XML comment warnings are disabled on generated code
  • #1939 Handles nullables types in XAML file generator
  • #1741 On Android, ApplicationData.Current.[LocalFolder|RoamingFolder] can now be used in the ctor of App.xaml.cs

    This change introduces a new constructor in Windows.UI.Xaml.NativeApplication that requests a delegate. In the Visual Studio Templates for Uno Platform, the Main.cs for the Android, the constructor now provides () => new App() instead of new App(), you can do the same in your existing application. See this file for an example.

  • [#1767] Invalid this keyword generated for Storyboard.SetTarget
  • [#1781] WASM Images are no longer draggable and selectable by default to match UWP
  • #1771 Fix ".Uno" in project names resulted in build errors.
  • #1531 Fix an issue with VirtualizePanelAdaptater by adding a cache where the ItemSources length change and created a OutOfRangeException
  • [WASM] #1518 Fix Navigation Issue Where SystemNavigationManager.enable() is called twice and clear the stack history
  • #1278 the XAML sourcegenerator now always uses the fully qualified type name to prevent type conflicts.
  • #1392 Resolved exceptions while changing cursor color on Android P.
  • #1383 resolve Android compilation errors related to Assets filenames: "Invalid file name: It must contain only"
  • #1380 iOS head generated by Uno Solution Template now specifies MinimumOSVersion, in line with XF so first compile is successful.
  • #1276 retrieving non-existent setting via indexer should not throw and ApplicationDataContainer allowed clearing value by calling Add(null) which was not consistent with UWP.
  • [iOS] Area of view outside Clip rect now allows touch to pass through, this fixes NavigationView not allowing touches to children (#1018)
  • ComboBox drop down is now placed following a logic which is closer to UWP and it longer flickers when it appears (especilly on WASM)
  • #854 BasedOn on a <Style> in App.Xaml were not resolving properly
  • #706 x:Name in App.Xaml's resources were crashing the compilation.
  • #846 x:Name on non-DependencyObject resources were crashing the compilation
  • [Android/iOS] Fixed generated x:uid setter not globalized for Uno.UI.Helpers.MarkupHelper.SetXUid and Uno.UI.FrameworkElementHelper.SetRenderPhase
  • Fix invalid XAML x:Uid parsing with resource file name and prefix (#1130, #228)
  • Fixed an issue where a Two-Way binding would sometimes not update values back to source correctly
  • Adjust the behavior of DisplayInformation.LogicalDpi to match UWP's behavior
  • [Android] Ensure TextBox spell-check is properly enabled/disabled on all devices.
  • Fix ComboBox disappearing items when items are views (#1078)
  • [iOS] TextBox with AcceptsReturn=True crashes ListView
  • [Android/iOS] Fixed Arc command in paths
  • Changing the DataContext of an element to a new value were pushing the properties default
    value on data bound properties before setting the new value.
  • [Android] .Click on a ButtonBase were not raising events properly
  • #1350 Vertical Slider was inverting value when tapped
  • TemplateReuse not called when dataContext is set
  • [WASM] #1167 Apply IsEnabled correctly to TextBox (inner TextBoxView is now correctly disabled)
  • [Android/WASM] Fix MaxLength not respected or overwriting text
  • Settings collection-based properties on root node in XAML were leading to C# compilation errors
  • Properties on root node in XAML were not applied when there was no content (sub-elements)
  • [Android] GroupedListviewHeaders were causing scrolling lag, missing flag
  • Flyout that are than anchor but fit in page were defaulting to full placement.
  • [iOS]Fixed DatePickerFlyout & TimePickerFlyout not being placed at the bottom
  • [Android] Animated content is cut off/glitchy when RenderTransform translation is applied (#1333)
  • #1409 Provide a better error-message on Page-Navigation-Errors
  • Fix NRE when using custom Pivot templates.
  • Fix iOS CompositionTarget handler race condition
  • [Wasm] Fix TextBoxView SelectionStart/SelectionEnd value parsing
  • [Wasm] Don't fail on FrameworkElement.Dispose()
  • [Android] ScrollViewer were no more clipping the scrollable area.
  • ComboBox's ControlTemplate was requiring a binding to TemplatedParent for the x:Name="ContentPresenter" control. Now aligned with UWP by making this binding in the control itself.
  • #1352 ThemeResource bugfixes:
    • StaticResource not working inside ResourceDictionary.ThemeDictionaries
    • Using a ThemeResource on the wrong property type shouldn't raise compile-time error (to align with UWP)
  • Fix layout bug in Image control.
  • [#1387] ComboBox: Fix DataContext was propagated to <ContentPresenter> when there was no selected item, causing strange display behavior.
  • #1354 fixed Recycler.State desync issue
  • #1533 [Wasm] Fix measure caching for zero sized measure
  • [iOS(iPad)] ComboBox : the combobox wasn't fully expanding vertically on first opening.
  • Popup & ComboBox (and other controls using Popup) were not behaving properly when IsLightDismissable were set to true.
  • [Wasm] Fix unloaded UIElements are made visible if measured and arranged
  • [Android] Fix java NRE handing touch events on detached view
  • [Pivot] Add support for non PivotItem items
  • #1557 Fix local DataContext on ContentDialog is overwritten
  • [WASM] Fix display for multiple popups (e.g. ComboBox inside of ContentDialog)
  • [Android] Fix invalid ImageBrush stack overflow with delayed image reuse
  • CommandBar fixes (AppBarToggleButton, AppBarButton)
  • Fix Symbols rendering in sample app
  • Fix multiple invocations of OnLoaded when hosting a control in ItemsControl
  • [Android] Fix glitchy animations inside ListView with transformed ancestor.
  • Adjust AppBar and CommandBar styles.
  • Adjust the Stretch mode of BitmapIcon content
  • Fix invalid Image size constraint
  • [Android] MenuFlyout was misplaced if view was in a hierarchy with a RenderTransform
  • Fix color refresh of BitmapIcon monochrome Foreground
  • [IOS] DatePickerFlyout min and max year were resetting to FallbackNullValue
  • [Android] Fix bug in ListView when using an ObservableCollection as its source and using Header and Footer.
  • #1924 Fix Android ListView.HeaderTemplate (and .FooterTemplate) binding bug when changing Header and Footer.
  • 164480 [Android] fixed a text wrapping issue caused by layout height desync
  • [Wasm] Fix unable to reset Image.Source property
  • #2014 Fix iOS Picker for ComboBox not selecting the correct item.
  • [iOS] #977 Fix exception when setting MediaPlayerElement.Stretch in XAML.
  • #1708 Fix initial Flyout placement and window resize placement
  • [Android] #2007 ComboBox does not take Window.VisibleBounds to position its popup
  • [Wasm] Fixes the measure of a TextBoxView #2034 #2095
  • [Android] [Wasm] Recent clipping improvements were incompleted. Fixed a case where a control was allowed to draw itself to use more than available place in the arrange phase.
  • [iOS] Fix negative result value of TimePicker. Now value range is limited from 0 to 1 day
  • #2129 WebAssembly Bootstrapper update to remove the implicit .NET 4.6.2 dependency, and support for long file paths on Windows.
  • #2147 Fix NRE in android-specific TextBox.ImeOptions
  • #2146 [iOS] ListView doesn't take extra space when items are added to collection
uno - XAML Hot Reload Preview 1

Published by jeromelaban about 5 years ago

Here's the XAML Hot Reload Preview 1 for Uno Platform!

To install this release, please read the following guide.

uno - 1.45.0

Published by MatFillion about 5 years ago

Features

  • Add support for Windows.System.Display.DisplayRequest API on iOS and Android
  • Add support for the following Windows.System.Power.PowerManager APIs on iOS and Android:
    • BatteryStatus
    • EnergySaverStatus
    • PowerSupplyStatus
    • RemainingChargePercent
    • PowerSupplyStatusChanged
    • EnergySaverStatusChanged
    • RemainingChargePercentChanged
    • BatteryStatusChanged
  • Updated CheckBox glyph to match UWP style on all platforms
  • Add support for the following DisplayInformation properties on iOS and Android:
  • Add support for CurrentInputMethodLanguageTag and TrySetInputMethodLanguageTag on Android, iOS and WASM
  • Add support for ChatMessageManager.ShowComposeSmsMessageAsync (and ChatMessage Body and Recipients properties) on iOS and Android
  • Add support for the following DisplayInformation properties on iOS and Android:
    • CurrentOrientation
    • LogicalDpi
    • NativeOrientation
    • RawDpiX
    • RawDpiY
    • ResolutionScale
    • StereoEnabled
    • RawPixelsPerViewPixel
    • DiagonalSizeInInches
    • ScreenHeightInRawPixels
    • ScreenWidthInRawPixels
    • AutoRotationPreferences
  • Performance improvements
    • Use Span<T> for Grid layout
    • Optimize Wasm text measuring
    • Performance improvements in TSInteropMarshaller.InvokeJS
  • [Wasm] Improve TextBlock measure performance
  • [Wasm] Improve PivotItem template pooling
  • 150233 [Android] fixed status-bar, keyboard, nav-bar layout on android
  • Add support for Brush implicit conversion (Fixes #730)
  • Add XamlReader support for top level ResourceDictionary (#640)
  • Add support for IDictionary objects in XAM (#729)
  • Add support for Binding typed property (#731)
  • Add support for RelativeSource.Self bindings
  • 149377 Improve performance of TimePicker and DatePicker on iOS.
  • 145203 [iOS] Support ScrollViewer.ChangeView() inside TextBox
  • 150793 [iOS] Add ListView.UseCollectionAnimations flag to allow disabling native insert/delete animations
  • 150882 [iOS] Fix visual glitch when setting new RenderTransform on a view
  • [Wasm] Add support of hardware/browser back button in SystemNavigationManager.BackRequested
  • [Wasm] Added support for custom DOM events
  • WebAssembly UI tests are now integrated in the CI
  • Enable support for macOS head development
  • [Wasm] Add NativeXXX styles (which are aliases to the XamlXXX styles)
  • [Wasm] Enable persistence for all ApplicationData folders
  • [Wasm] Add Samples App UI Screenshots diffing tool with previous builds
  • Add PasswordVault on supported platfrosm
  • [Android] Updated support libraries to 28.0.0.1 for Android 9
  • Add support for x:Load
  • [Wasm] Restore support for x:Load and x:DeferLoadStrategy
  • [Wasm] Scrolling bar visibility modes are now supported on most browsers
  • Fix invalid cast exception when using x:Load or x:DeferLoadStrategy
  • Add Windows.Globalization.Calendar
  • [Wasm] Support of overlay mode of the pane
  • Using State Triggers in VisualStateManager now follows correct precedence as documented by Microsoft
  • Add support for FlyoutBase.AttachedFlyout and FlyoutBase.ShowAttachedFlyout()
  • x:Bind now supports binding to fields
  • Grid positions (Row, RowSpan, Column & ColumnSpan) are now behaving like UWP when the result overflows grid rows/columns definition
  • [Wasm] Improve TextBlock measure performance
  • [Wasm] Improve Html SetAttribute performance
  • MenuBar
    • Import of MenuBar code, not functional yet as MenuItemFlyout (Issue #801)
    • Basic support for macOS native system menus
  • Ensure FrameworkElement.LayoutUpdated is invoked on all elements being arranged
  • Fix Grid.ColumnDefinitions.Clear exception (#1006)
  • 155086 [Android] Fixed AppBarButton.Label taking precedence over AppBarButton.Content when used as PrimaryCommands.
  • ComboBox
    • Remove dependency to a "Background" template part which is unnecessary and not required on UWP
    • Make sure that the PopupPanel hides itself if collapsed (special cases as it's at the top of the Window)
    • [iOS] Add support of INotifyCollectionChanged in the Picker
    • [iOS] Remove the arbitrary null item added at the top of the Picker
    • [iOS] Fix infinite layouting cycle in the iOS picker (Removed workaround which is no longer necessary as the given method is invoked properly on each measure/arrange phases)
  • [Wasm] Refactored the way the text is measured in Wasm. Wasn't working well when a parent with a RenderTransform.
  • Grid now supports ColumnDefinition.MinWidth and MaxWidth and RowDefinition.MinHeight and MaxHeight (#1032)
  • Implement the PivotPanel measure/arrange to allow text wrapping in pivot items
  • [Wasm] Add PathIcon support
  • Add support UI Testing support through for Uno.UI.Helpers.Automation.GetDependencyPropertyValue

Breaking Changes

  • The WebAssemblyRuntime.InvokeJSUnmarshalled method with three parameters has been removed.
  • NavigationBarHelper has been removed.
  • Localized Text, Content etc is now applied even if the Text (etc) property isn't set in Xaml. Nested implicit content (eg <Button><Border>...) will be overridden by localized values if available.
  • [Android] Unless nested under SecondaryCommands, the AppBarButton.Label property will no longer be used for the title of menu item, instead use the AppBarButton.Content property. For SecondaryCommands, keep using AppBarButton.Label.
  • The WordEllipsis was removed from the TextWrapping as it's not a valid value for UWP (And it was actually supported only on WASM) (The right way to get ellipsis is with the TextTrimming.WordEllipsis)

Bug fixes

  • DatePicker FlyoutPlacement now set to Full by default
  • Semi-transparent borders no longer overlap at the corners on Android
  • The HAS_UNO define is now not defined in uap10.0.x target frameworks.
  • The XamlReader fails when a property has no getter
  • Click and Tapped events were not working property for ButtonBase on Android and iOS.
  • 146790 [Android] AndroidUseManagedLoadedUnloaded causes partial item shuffling in ListView
  • 150143 [Android] Toggling TextBox.IsReadOnly from true to false no longer breaks the cursor
  • WasmHttpHandler was broken because of a change in the internal Mono implementation.
  • 140946 [Android] Upon modifying a list, incorrect/duplicated items appear
  • 150489 [Android] PointerCanceled not called on scrolling for views with a RenderTransform set
  • 150469 [iOS] Virtualized ListView items don't always trigger their multi-select VisualStates
  • 1580172 ToggleSwitch wasn't working after an unload/reload: caused by routedevent's unregistration not working.
  • 145203 [Android] Fix overflow on LogicalToPhysicalPixels(double.MaxValue), allowing ScrollViewer.ChangeView(double.MaxValue,...) to work
  • 150679 [iOS] Fix path issue with Media Player not being able to play local files.
  • Adjust support for StaticResource.ResourceKey
  • 151081 [Android] Fix Keyboard not always dismissed when unfocusing a TextBox
  • [WASM] Support not_wasm prefix properly. (#784)
  • 151282 [iOS] Fixed Slider not responding on second navigation, fixed RemoveHandler for RoutedEvents removing all instances of handler
  • 151497 [iOS/Android] Fixed Slider not responding, by ^ RemoveHandler fix for RoutedEvents
  • 151674 [iOS] Add ability to replay a finished video from media player
  • 151524 [Android] Cleaned up Textbox for android to remove keyboard showing/dismissal inconsistencies
  • Fix invalid code generation for x:Name entries on Style in resources
  • [Wasm] Fix incorrect TextBlock measure with constrains
  • 151676 [iOS] The keyboard is closing when tap on the webview or toolbar
  • 151655 [TimePicker][iOS] First time you open time picker it initializes the existing value to current time
  • 151656 [TimePicker][iOS] Time picker always shows +1 minute than selected value
  • 151657 [DatePicker][iOS] Date picker flyout displays 1 day earlier than selected value
  • 151430 [Android] Prevent touch event being dispatched to invisible view
  • Fixed overflow errors in Grid.Row/Column and Grid.RowSpan may fail in the Grid layouter.
  • 151547 Fix animation not applied correctly within transformed hierarchy
  • Setting the .SelectedValue on a Selector now update the selection and the index
  • [WASM] Fix ListView contents not remeasuring when ItemsSource changes.
  • [WASM] Dismissable popup & flyout is closing when tapping on content.
  • 145374 [Android] fixed android keyboard stays open on AppBarButton click
  • 152504 [Android] Pointer captures weren't informing gestures of capture, fixes Slider capture issue
  • 148896 [iOS] TextBlock CarriageReturns would continue past maxlines property
  • 153594 [Android] EdgeEffect not showing up on listView that contain Headers and Footers
  • #881 [iOS] [Android] Support explicitly-defined ListViewItems in ListView.
  • #902 [Android] Resource generation now correctly escapes names starting with numbers and names containing a '-' character
  • 154390 Storyboard Completed callback were not properly called when there's not children.
  • [iOS] Fix bug where Popup can be hidden if created during initial app launch.
  • #921 Ensure localization works even if the property isn't defined in XAML
  • [WASM] Using x:Load was causing Collection was modified exception.
  • Fix support for localized attached properties.
  • Fix a potential crash during code generated from XAML, content were not properly escaped.
  • #977 Fix exception when setting MediaPlayerElement.Stretch in XAML.
  • [Android] Fix MediaPlayerElement.Stretch not applied
  • [Android] Fix for ListView elements measuring/layouting bug
  • Fix Grid.ColumnDefinitions.Clear exception (#1006)
  • [Wasm] Align Window.SizeChanged and ApplicationView.VisibleBoundsChanged ordering with UWP (#1015)
  • Add VS2019 Solution Filters for known developer tasks
  • #154969 [iOS] MediaPlayer ApplyStretch breaking mediaplayer- fixed
  • 154815 [WASM] ItemClick event could be raised for wrong item
  • 155256 Fixed xaml generated enum value not being globalized
  • 155161 [Android] fixed keyboard flicker when backing from a page with CommandBar
  • Fix the processing of the GotFocus event FocusManager (#973)
  • 116098 [iOS] The time/day pickers are missing diving lines on devices running firmware 11 and up.
  • [iOS] Fix invalid DataContext propagation when estimating ListView item size (#1051)
  • RadioButton was not applying Checked state correctly with non-standard visual state grouping in style
  • [Android] Fix several bugs preventing AutoSuggestBox from working on Android. (#1012)
  • #1062 TextBlock measure caching can wrongly hit
  • 153974 [Android] fixed button flyout placement
  • Fix support for ScrollBar touch events (#871)
  • LinearGradientBrush.EndPoint now defaults to (1,1) to match UWP
  • Fixed an issue where a Two-Way binding would sometimes not update values back to source correctly
  • [Android] A ListView inside another ListView no longer causes an app freeze/crash
  • Date and Time Picker Content fix + Refactored to use PickerFlyoutBase (to resemble UWP implementation)
uno - 1.44.1

Published by MatFillion over 5 years ago

Release 1.44.1

Features

  • Add support for ICollectionView.CopyTo
  • Add support for ViewBox
  • Add support for AutoSuggestBox.ItemsSource
  • Add support for Selector.SelectedValuePath (e.g. useful for ComboBox)
  • Add support for JS unhandled exception logging for CoreDispatcher (support for Mixed mode troubleshooting)
  • [WASM] Improve element arrange and transform performance
  • Restore original SymbolIcon.SymbolProperty as a C# property
  • Add support for MediaPlaybackList
  • Update Uno.SourceGenerationTasks to improve build performance
    • Move to the latest Uno.SourceGenerationTasks to improve project parsing performance, and allows for the removal of unused targets caused by nventive/Uno.SourceGeneration#2. Uno.Xaml and Uno.UI.BindingHelpers now only build the required targets.
    • Move to net461 for test projects so the the Uno.Xaml project can be referenced properly
    • Use the latest MSBuild.Sdk.Extras for actual parallel cross-targeted builds
    • Move the nuget package versions to the Directory.Build.targets file so it's easier to change all versions at once.
  • Add support for NavigationView Top Navigation
  • Adjust SystemChromeMediumHighColor to use the Light theme
  • Add support for FrameworkElement.GoToStateCore
  • Adjust ListView measure/arrange for dynamic content
  • Add some missing default UWP styles
  • The FrameworkElement.IsLoaded property is now public
  • Improve XAML generation error messages for unknown symbols
  • Added default console logging for all platforms
  • Add support for Application.OnWindowCreated
  • Added non-throwing stubs for AutomationProperty
  • Add missing system resources
  • Add support for x:Bind in StaticResources (#696)
  • Add support for x:Name late binding support to adds proper support for CollectionViewSource in Resources (#696)
  • PointerRelease events are now marked as handled by the TextBox
  • KeyDown events that are changing the cursor position (left/right/top/bottom/home/end) are now marked as handled by the TextBox
  • RoutedEventArgs.IsGenerated returns false as generating events with Uno is not yet supported
  • AutomationPeer.ListenerExists returns false as we cannot generating events with Uno is not yet supported
  • KeyUp event properly sends KeyEventArgs to the controls
  • Add ItemsSource CollectionViewSource update support (#697)
  • Add support for the CollectionViewSource.ItemsPath property
  • Fixed support for dots in resource names (#700)
  • Add support for BindingExpression.UpdateSource()
  • Updated Android version to target Android 9.0
  • The CI validates for API breaking changes
  • MediaTransportControls buttons now use Tapped event instead of Click
  • Fixed Pointer capture issues on sliders on iOS

Breaking changes

  • Make UIElement.IsPointerPressed and IsPointerOver internal
  • You will not be able to build projects targeting Android 8.0 locally anymore. Change your Android target to Android 9.0 or replace MonoAndroid90 by MonoAndroid80 in the TargetFrameworks of your projects files.
  • 1.43.1 breaking changes rollback to 1.42.0:
    • ObservableVector<T> is now internal again
    • TimePicker.Time and TimePicker.MinuteIncrement are now back for netstandard2.0
    • MediaPlaybackItem.Source is back as a readonly property
    • MediaPlaybackList.Items is back to an IObservableVector

Bug fixes

  • Transforms are now fully functionnal
  • [Wasm] Fixed ListView infinite loop when using custom containers
  • [Wasm] Use Uno.UI Assembly for namespace type lookup in XamlReader
  • [Wasm] Fixed System.UriConverter is being linked out
  • 145075 [Android] [Wasm] Android and Wasm don't match all specific UWP behaviors for the Image control.
  • [Wasm] Don't fail if the dispatcher queue is empty
  • 146648 [Android] fixed ListView grouped items corruption on scroll
  • [Wasm] Fix ListView recycling when the XamlParent is not available for AutoSuggestBox
  • 147405 Fix NRE on some MediaTransportControl controls
  • #139 Update Uno.SourceGenerationTasks to improve build performance
  • Update Uno.UI.Toolkit base UWP sdk to 17763
  • [Wasm] Fixes items measured after being removed from their parent appear in the visual tree, on top of every other items.
  • [Wasm] Fixes lements may not be removed form the global active DOM elements tracking map
  • [Wasm] Disable the root element scrolling (bounce) on touch devices
  • Fixed invalid iOS assets folder. ImageAsset nodes must not be <Visible>false</Visible> to be copied to the generated project.
  • Make CollectionViewSource.View a proper DependencyProperty (#697)
  • Fixed support for string support for Path.Data (#698)
  • 150018 Fix nullref in Pivot when using native style
  • 149312 [Android] Added FeatureConfiguration.NativeListViewBase.RemoveItemAnimator to remove the ItemAnimator that crashes when under stress
  • 150156 Fix ComboBox not working when using Popover.
  • Click and Tapped events were not working property for ButtonBase on Android and iOS.
  • 150233 [Android] fixed status-bar, keyboard, nav-bar layout on android
    • LayoutProvider exposes the Rects of status-bar, keyboard, navigation-bar, and an LayoutChanged event to monitor the changes.
  • 150143 [Android] Toggling TextBox.IsReadOnly from true to false no longer breaks the cursor
uno - Release 1.43.1

Published by MatFillion over 5 years ago

Features

  • [Wasm] Improve general performance and memory pressure by removing Javascript interop evaluations.
  • Add support for Windows 10 SDK 17763 (1809)
  • Improve the Uno.UI solution memory consumption for Android targets
  • Add support for GridLength conversion from double
  • Raise exceptions on missing styles in debug configuration
  • Add working ViewBox stub
  • Path.Data property now invalidates measure and arrange
  • Wasm Image logs Opened and Failed events
  • Add UpToDateCheckInput to avoid VS invalid incremental rebuilds
  • 35178 Added recipe for copying text to clipboard
  • Added ToogleSwitch documentation in Uno/Doc/Controls.
  • Added new properties for ToggleSwitch Default Native Styles.
    [iOS] For BindableUISwitch : TintColorBrush property was added to be able to tint the outline of the switch when it is turned off.
    [Android] For BindableSwitchCompat : - Text property was added in order to change the ToggleSwitch label.
    - TextColor property was added in order to change the ToggleSwitch label color.
    - ThumbTint property was added in order to change the Thumb color.
    - TrackTint property was added in order to change the Track color.
  • Samples apps now contain a Unit Tests page
  • Added missing resources for NavigationViewItem
  • All Nuget and VSIX artifacts are now Authenticode signed
  • Resource strings are now loaded from upri files for faster resolution
  • Add FeatureConfiguration.Interop.ForceJavascriptInterop to enable JS Eval fallback in Wasm mode.
  • Add support for 1809 NavigationView
  • Add support for runtime conversion of global static resources unknown at compile time
  • Fixed fallback support for Style property set via ThemeResource
  • Add support for multiple resw folders with upri resource generation
  • Add support for ThicknessHelper
  • ResourceLoader adjustments …
    • CurrentUICulture and CurrentCulture are set when setting ResourceLoader .DefaultCulture
    • upri load now ignores resources not used by the current culture
  • Add BrushConverter support for Color input
  • Add SplitView support for PaneOpened and PaneOpening
  • Add CoreApplication.GetCurrentView() Dispatcher and TitleBar stubs support
  • Add support for IsItemItsOwnContainer iOS ListView
  • Add missing Android Sample App symbols font
  • Add SampleControl for Samples app for easier browsing and UI Testing of samples
  • Import Border samples
  • Improve UIElement inner Children enumeration performance and memory usage
  • Add FeatureConfiguration.FrameworkElement.AndroidUseManagedLoadedUnloaded to control the native or managed propagation performance of Loaded/Unloaded events through the visual tree
  • Raise Application.UnhandledException event on failed navigation
  • Adjusts the Microsoft.NETCore.UniversalWindowsPlatform version in the UWP head template to avoid assembly loading issues when using the Uno library template in the sample solution.
  • [Android] Add support for ListViewItem instances provided via the ItemsSource property
  • Added support to disable accessibility feature of larger text on iOS and Android by adjusting the FeatureConfiguration.Font.IgnoreTextScaleFactor flag. Please note that Apple recommends to keep text sizes dynamic for a variety of reasons and to allow users to adjust their text size preferences.
  • [Wasm] Code for Path.Stretch has been moved to Shape and works well now for all shapes.
  • Add support for DynamicObject data binding, to enable support for Elmish.Uno.
  • Add support for VS2019 VSIX installation
  • Improved Xaml generation speed, and incremental build performance
  • [Wasm] Fix CoreDispatcher StackOverflowException when running on low stack space environments (e.g. iOS)
  • Add support for ResourceLoader.GetForViewIndependentUse(string) and named resource files
  • [Wasm] Load events are now raised directly from managed code. You can restore the previous behavior (raised from native) by setting FeatureConfiguration.FrameworkElement.WasmUseManagedLoadedUnloaded = false.
  • Updated memory profiling documentation
  • Updated default app template iOS GC settings
  • Add support for WebAssembly Web Projects
  • Add support for WebAssembly debugging with Chrome
  • Add support for XAML x:FieldModifier
  • Add Uno.UI linker definition files
  • Adjust FlyoutPresenter default template
  • Add support for Flyout anchor
  • Improved XAML designer support
  • Improved DependencyObject performance under AOT (JS dynCalls for overrides/delegates inside of EH blocks)
  • Add support for MatrixTransform, UIElement.TransformToVisual now returns a MatrixTransform

Breaking changes

  • Refactored ToggleSwitch Default Native XAML Styles. (cf. 'NativeDefaultToggleSwitch' styles in Generic.Native.xaml)
    [iOS] For BindableUISwitch : Background property was changed for OnTintColorBrush and Foreground property for ThumbTintColorBrush.
    [Android] BindableSwitch was renamed BindableSwitchCompat in order to avoid confusion with the Switch control.
  • Remove invalid Windows.UI.Xaml.Input.VirtualKeyModifiers
  • Time picker flyout default styles has been changed to include done and cancel buttons
  • DataTemplateSelector implementations are now called using the 2 parameters overload first with a fallback to the 1 parameter overload on null returned value.
    Old behavior could be restored using FeatureConfiguration.DataTemplateSelector.UseLegacyTemplateSelectorOverload = true.
  • Using "/n" directly in the XAML for a text/content property is not supported anymore in order to match the UWP behavior.
    You can use " " instead in the text/content properties or a carriage return where you need it in the localized resources.
  • The ResourcesGeneration msbuild target has been renamed to UnoResourcesGeneration
    If your csproj is using this target explicily, change it to the new name.

Bug fixes

  • MediaPlayerElement [iOS] Subtitles are not disable on initial launch anymore
  • MediaPlayerElement [Android]Player status is now properly updated on media end
  • MediaPlayerElement [Android]Fix issue when video metadata reports a width or height of 0
  • #388 Slider: NRE when vertical template is not defined
  • 138117 [Android] Removing a bookmarked/downloaded lesson can duplicate the assets of a different lesson.
  • [Wasm] Fix VirtualizingPanelAdapter measure and arrange
  • 137892 [Android] Fixed FontFamily, FontSize and FontWeight are not applied anymore on the TextBox's content.
  • Don't fail on empty grid ArrangeOverride
  • Don't generate the Bindable attribute if already present
  • Adjust .NET template projects versions to 4.6.1
  • Adjust Microsoft.CodeAnalysis versions to avoid restore conflicts
  • Fix element name matching existing types fails to compile (e.g. ContentPresenter)
  • 138735 [Android] Fixed broken DatePicker
  • Multi-selection Check Boxes in ListViewItems are appearing brielfly (https://github.com/nventive/Uno/issues/403)
  • 140721 [Android] FlipView not visible when navigating back to page
  • 138537 [iOS] App freezes after State selection causing infinite load on every subsequent launch
  • Fix invalid Border Content type for macOS
  • Don't fail iOS ListView if item Content is null
  • [Wasm] Implement naive refresh for items manipulation in the ListViewBase
  • 3326 [iOS][ItemsControl] ItemsControl in FlipView does not restore items properly
  • Fix NRE in Slider when no template is applied
  • Fix Frame does not unset Page.Frame when a page is removed
  • Add Wasm PlatformNotSupportedException for System.IO after CoreFX merge in mono
  • Border properties now invalidates measure and arrange on all platforms
  • 141907 [Android] [iOS] The toggle switch is half missing.
  • 142937 [Android] [iOS] Some Button ThemeBrushes are missing.
  • 143527 [Android] Fixed broken TimePicker Flyout on android devices.
  • 143596 [Wasm] Images stretching is incorrect
  • 143595 [Wasm] Wasm ListView Resizing is not working - Limitation: items can't change its size yet, but it's now getting measured/arranged correctly.
  • 143527 [Android] Fixed broken TimePicker Flyout on android devices.
  • 143598 [Wasm] Wasm Animation rotation center is incorrect
  • Fixes invalid parsing of custom types containing {} in their value (#455)
  • Add workaround for iOS stackoverflow during initialization.
  • Improve the file locking issues of Uno.UI.Tasks MSBuild task
  • Fix VisibleBoundsPadding memory leak
  • [ios] Time picker missing "OK" confirmation button
  • #87 / 124046 ComboBox incorrect behavior when using Items property
  • [Wasm] ComboBox wasn't working anymore since few versions
  • Fix memory leak with defining event handlers in XAML documents
  • Fix memory leak in CommandBar
  • Fix memory leak when using x:Name in XAML documents
  • 143170 [iOS] [WatermarkedDatePicker] When the Maxyear boundary is reached the first time, the calendar goes back two days instead of one
  • #491 DataTemplateSelector.SelectTemplate is not called on iOS and Android. The behavior is now closer to UWP.
  • 144268 / #493 : Resources outside of 'en' folder not working
  • Support for duplicate XAML AutomationProperties.Name
  • ListViewBase.SelectedItems is updated on selection change in Single selection mode
  • #528 ComboBoxes are empty when no datacontext
  • Ensure that Uno.UI can be used with VS15.8 and earlier (prevent the use of VS15.9 and later String APIs)
  • [Android] Listview Items stay visually in a pressed state,(can click multiple) when you click then scroll down, click another item, and scroll back up
  • 144101 fixed ListView group headers messed up on item update
  • #527 Fix for Selector.SelectionChanged is raised twice on updated selection
  • [iOS] Add fail-safe on FrameworkElement.WillMoveToSuperview log to Application.Current.UnhandledException
uno - 1.43.0-dev.657

Published by jeromelaban almost 6 years ago

This release is contains a preview of the WebAssembly projects and C# debugger.

See this article for more details on this release.

uno - Uno.UI Release 1.42

Published by agneszitte almost 6 years ago

This new release includes the following major features :

  • Add support for NavigationView control (#325)
  • [WASM] Support virtualization in ListView (#234)
  • Add base infrastructure platform for macOS
  • Add support for UIElement.Clip for WebAssembly
  • Add BitmapIcon support

And other features:

  • Add a behavior so that tap makes controls fade out
  • [Android], [iOS] ListViewBase Support MultiSelectStates on ListViewItem. This allows the item container
    to visually adapt when multiple selection is enabled or disabled.
  • Add support for inner-Uno.UI strings localization
  • Add stubs for RichTextBlock
  • Add support for SymbolIcon control for WebAssembly and iOS
  • Add BitmapIcon.ShowAsMonochrome support
  • Add support for Windows.Foundation.UniversalApiContract in IsApiContractPresent
  • Add support for ContentProperty on UserControl
  • Add DelegateCommand

This new release also addresses the following issues :

  • [Android] Fixed ImageBrush flash/flickering occurs when transitioning to a new page for the first time.
  • [iOS] Fixed bug where stale ScrollIntoView() request could overwrite more recent request
  • [iOS] ScrollIntoView() throws exception for ungrouped lists
  • [Android] TextBlock.Text isn't visually updated if it changes while device is locked
    Fix Android and iOS may fail to break on breakpoints in .xaml.cs if the debugging symbol type is Full in projects
    created from templates.
  • [Android] Path is cut off by a pixel
  • [Android] Window bounds incorrect for screen with rounded corners
  • [WASM] Text display was chopped on Wasm. (#312)
  • WebView No longer raises NavigationFailed and NavigationCompleted events when navigation is cancelled on
    iOS.
  • [Android] Page elements are aligned differently upon back navigation
  • [iOS] Image inside Frame doesn't respond to orientation changes
  • Fix crash when a VisualState does not have a valid Name
  • Adjust compiled binding application ordering when loading controls
  • Ensure the SplitView templated parent is propagated properly for FindName
  • Fix infinite loop when parsing empty Attached Properties on macOS
  • [iOS] Fixed DatePickerSelector not propagating coerced initial value
  • [iOS] Navigating to a second local html file with WebView doesn't work.
  • CommandBar doesn't take the proper space on iOS phones in landscape
  • Image with partial size constraint now display properly under Wasm.
  • [iOS][TextBlock] Measurement is always different since we use Math.Ceiling
  • [iOS] ListView - fix bug where item view is clipped
  • [Android] Incorrect offset when applying RotateTransform to stretched view
  • Now supports internal object in desource dictionaries
  • CommandBar doesn't take the proper space on iOS phones in landscape
  • The explicit property <Style.Setters> does not intialize style setters properly (#26 )
  • [Android] ListView shows overscroll effect even when it doesn't need to scroll
  • iOS project compilation fails: Can't resolve the reference 'System.Void
    Windows.UI.Xaml.Documents.BlockCollection::Add(Windows.UI.Xaml.Documents.Block) (#376 )

As a breaking change, the collapsible button bar is now taken into account by visible bounds calculation.
Apps which use VisibleBoundsPadding or have command bars will therefore see an adjustment to the height of their windows on Android.

View the full change log.