General
Read our release blog post for more information about new features in Avalonia 12.1.0!
What's Changed
Enhancements
- Core – Allow setting
ThemeVarianttoDefaultto reset theme to system on android by @emmauss in #16340 - Core – Allow
Dispatcherto be converted to aTaskSchedulerby @TomEdwardsEnscape in #21032 - Core – Remove obsolete int32 limit on
DispatcherTimer.Intervalby @TomEdwardsEnscape in #21113 - Core – Bump MicroCOM and use source generators by @maxkatz6 in #21218
- Core – Improve composition hit testing performance with per-visual AABBs by @hez2010 in #21310
- Core – Tests/render data drawing context coverage by @ZehMatt in #21341
- Core – Align Touch/Pen capture semantics with Mouse (#21325) by @miloush in #21363
- Core – Refactor per-draw render data allocations with a binary opcode stream by @ZehMatt in #21366
- Core – Allow attaching a platform-specific event cookie to platform events by @kekekeks in #21378
- Core – Pass original logical size to render targets by @kekekeks in #21380
- Core – Pass shadow extents to the platform by @kekekeks in #21385
- Core – A bit better handling of gpu context loss by @kekekeks in #21387
- Core – Platform event to toggle drawn decorations state by @kekekeks in #21388
- Core – Use
eglGetProcAddressinstead ofNativeLibrary.TryGetExportby @kekekeks in #21392 - Core – Support desktop OpenGL profiles via EGL by @kekekeks in #21393
- Core – Implement
IStorageProvider.OpenFileWithResultAsyncby @MrJul in #21418 - Core – Implement
Bitmap.Savewith a format by @MrJul in #21455 - Core – Disable region dirty rect clipping by default by @MrJul in #21553
- Core – Enable stencil buffers by default + add configurable option by @MrJul in #21586
- Core – avoid
SKBitmap.Copywhen creatingImmutableBitmapfrom pixels by @kekekeks in #21675 - Core – Generate a CycloneDX SBOM per published NuGet package by @grokys in #21681
- Core – Composition-aware geometries and drawing change detection by @MrJul in #21682
- Controls – Improve pull-to-refresh usability in
RefreshContainerby @gentledepp in #18617 - Controls – Add
ScrollbarContext Menu by @drasticactions in #19413 - Controls – Add custom
CalendarDatePickerdate parsing to allow for multiple user input formats by @Deadpikle in #21193 - Controls – Implement
TableViewby @MrJul in #21511 - Controls – Show checkerboard background for transparent ColorView palette items by @Jaex in #21613
- Controls – Allow copying and cutting revealed TextBox passwords by @zrt2399 in #21710
- Windows – Optimize rendering performance by reducing premultiplied AlphaMode by @lindexi in #20757
- Windows – Create
Avalonia.WinUIfor initial WinUI embed support by @drasticactions in #21430 - Windows – Implement
Win32Properties.WindowCornerPreferenceby @MrJul in #21615 - Windows – Support rendering at max refresh rate of current displays by @emmauss in #21643
- Windows – Let
GraphicsAdapterSelectionCallbacksee unfiltered adapters and warn on Adreno WARP fallback by @nickna in #21695 - X11 – Implement automatic fps detection by @kekekeks in #18558
- X11 – Implement XDND: drag-and-drop support for Linux by @MrJul in #20926
- X11/Wayland – Update to latest
Tmds.DBus.Protocolby @tmds in #21472 - X11/Wayland – Better platform window handle abstraction for
DBusSystemDialogby @kekekeks in #21379 - X11/Wayland – Introduce cross-thread support for
AutomaticRawEventGrouperDispatchQueueby @kekekeks in #21386 - X11/Wayland – Workarounds for NVIDIA EGL drivers by @kekekeks in #21590
- Wayland – Wayland-specific handling for platform surface readiness by @kekekeks in #21382
- Wayland – Roslyn generator for generating cross-thread call proxies by @kekekeks in #21384
- Wayland – Wayland protocol support by @kekekeks in #21448
- Wayland – Added GLib event loop support to wayland backend by @kekekeks in #21669
- Android/iOS – Add platform feedback api for sound and haptic feedback by @emmauss in #21189
- Android – Use BCL storage for
TryGetapi by @emmauss in #21641
Fixes
- Core – Remove dead code in
AvaloniaObjectby @grokys in #21452 - Core – Fix text selection brush not applying when text selection changes by @emmauss in #21480
- Core – Fix
RequestedThemeVariantdefault value by @MrJul in #21624 - Core – Rework text fallback itemization by @Gillibald in #21631
- Core –
InterWordJustificationfixes by @Gillibald in #21701 - Core – Fix
BclLauncher.Execthrowing instead of returning false by @Misaka-L in #21704 - Controls – Return false by default from
FocusManager.CanHaveFocusableChildrenby @freddiesmartbox in #21640 - Controls – Fix
SelectableTextBlockselection offset withInlineUIContainerby @JoshuaRowePhantom in #21646 - Controls – Fix
PART_OnContentPresentername typo inToggleSwitchby @zrt2399 in #21728 - XAML – Compiled Bindings: Fix unpredictable binding to method selection by @maxkatz6 in #21617
- XAML: Don't include non-text files in Roslyn's
AdditionalFilesby @maxkatz6 in #21729 - Windows – Fix
TopMosthandling for Popups by @StefanKoell in #17841 - Windows – Support decimal in automation
ComVariant(fixesNumericUpDowncrash under UIA) by @valentino-saitz-optris in #21634 - Windows – Respect IME preedit cursor position by @gotoh in #21632
- Windows – Align
ExpandCollapseStatemember order with UIA by @jmacato in #21693 - Windows – Fix working area changed won't update screen by @Misaka-L in #21707
- Windows – Fix empty automation bounds for custom root providers by @jmacato in #21730
- X11 – Fix mishandled cancellation in
DBusTextInputMethodBaseby @deryaza in #21527 - X11 – Re-read
_NET_WORKAREAon WMPropertyNotifyby @lambgoesbaa in #21651 - X11 – Fix XEmbed client by @kekekeks in #21677
- Android – TalkBack should still respond to all hover events by @IsaMorphic in #21644
- Android – TalkBack should highlight controls instead of their ancestors by @IsaMorphic in #21654
- Android – Fix crash populating accessibility node for some peers by @mikegoatly in #21726
- Android – Fix AvaloniaView double root creation by @MrJul in #21738
- Browser – Fix typo:
verityPermissions->verifyPermissionsby @Frederisk in #21281 - Headless – Fix hang if exception is thrown during headless session app construction by @ThadHouse in #21688
Misc
- Samples – Update ControlCatalog to use the Page system by @emmauss in #21044
- Samples – Fix OpenGL Lease page not showing in ControlCatalog by @MrJul in #21198
- Samples – Improve ControlCatalog sidebar search by @jsuarezruiz in #21236
- Samples – ControlCatalog: improve transparent appearance by @MrJul in #21441
- Infra – Reset API suppressions by @MrJul in #21106
- Infra – update .gitignore for left over generated files, and VS Code C# Dev Kit *.lscache by @Shirasagi0012 in #21228
- Infra – Link to integration tests readme by @miloush in #21329
- Infra – Adjust build instructions by @MrJul in #21397