What's Changed
Combined change log from all 11.2.0 betas and rc.
Features
- feat: Every RoutedEvent should be usable as Attached Event by @workgroupengineering in #15274
- New ToolTipClosing, ToolTipOpening attached events and ToolTip.Opened, ToolTip.Closed by @maxkatz6 in #15493
- Custom popup placement callback by @maxkatz6 in #15667
- Add Close and ClearAll api for INotificationManager and IManagedNotificationManager by @wieslawsoltes in #15628
- Add dedicated automation peers for TreeView and TreeViewItem by @wieslawsoltes in #15653
- Add HotKeys Page to DevTools by @stevemonaco in #15700
- Refactored WASM rendering, added MT support for dispatcher by @kekekeks in #15709
- Implementing IFormattable on KeyGesture by @IanRawley in #15828
- DataGrid: expose row index by @rabbitism in #15909
- Avalonia.Native TopLevel embedding by @Gillibald in #15932
- Adds support for Seconds to TimePicker by @begleysm in #16079
- MacOS sandboxing feature by @maxkatz6 in #16090
- Add an overload for ClassicDesktopStyleApplicationLifetime by @NeverMorewd in #16167
- Implement
BindingOperations.GetBindingExpressionBase
by @grokys in #16214 - Add UpdateSourceTrigger support for ReflectionBindingExtension by @rabbitism in #16861
- Screens API refactor by @maxkatz6 in #16295
- X11 - Refactor x11 Screen API by @emmauss in #16705
- Improve TextTrimming customization experience by @Gillibald in #16521
- x:Shared by @workgroupengineering in #16644
- PolyBezierSegment by @workgroupengineering in #16664
- ResourceProvider upgrade by @maxkatz6 in #16928
- Add BoolTransition by @dbriard in #16941
- Expose TreeViewItem expansion status to root event. by @rabbitism in #16984
- Enable VisualBrush to be used as Visual's OpacityMask by @kekekeks in #17072
- Added Win32PlatformOptions.GraphicsAdapterSelectionCallback by @kekekeks in #17079
- Implemented GLib-based dispatcher by @kekekeks in #17281
- Avalonia single project support by @maxkatz6 in #9613
- Improve DevTools previewer of setter values by including all value priorities by @maxkatz6 in #13802
Enhancements
- Enable Metal rendering by default for iOS and macOS by @maxkatz6 in #14762
- Improve AvaloniaObject.GetValue performance by @MrJul in #15342
- ToolTip should use Popup internally + fix Popups not closing when placement target is closed by @maxkatz6 in #15358
- Add basic integration tests for NativeControlHost and improve its automation/a11y support. by @grokys in #15542
- [Windows] WindowDecorations related integration tests by @maxkatz6 in #15561
- Bump DBus stack by @affederaffe in #15568
- Validate all width/height properties of Layoutable when they are set by @TomEdwardsEnscape in #15753
- Refactor WASM input and dom-callbacks to work with multithreading by @maxkatz6 in #15849
- Request for Feedback: Improving Startup Latency in X11 by @Sewer56 in #16033
- TrayIcon integration tests by @maxkatz6 in #16154
- Fixed build error: SourceRoot paths are required to end with a slash or backslash by @heku in #16174
- Remove obsolete API usage from
SelectingItemsControl
. by @grokys in #16220 - Move IsDirect = true into DirectPropertyBase by @heku in #16256
- Android - Refactor AvaloniaInputConnection by @emmauss in #16490
- Obsolete CompiledBindingPathBuilder.SetRawSource by @MrJul in #16505
- UWP/WinUI style XYFocus subtree restrictions by @IanRawley in #16557
- Remove System.Linq.Expressions usages in ReflectionClrPropertyInfo by @MrJul in #16568
- Increase LayoutTransformControl.DecimalsAfterRound from 4 to 8 by @BobLd in #16583
- Extract non-generic members from frequently used generic types by @MrJul in #16585
- Switch to a HashSet as backing for SafeEnumerableList by @halgari in #16633
- Only add the text selection canvas when the textbox is focused by @emmauss in #16643
- 11.2.x Private/PublicAPI adjustments by @maxkatz6 in #16733
- Reduced memory alloc for combined binding subjects by @YohDeadfall in #16794
- feat: Align
PathSegments
ctor overloads to WPFPathSegmentCollection
by @workgroupengineering in #16809 - [AVN] Introduced ComObjectWeakPtr by @kekekeks in #17041
- Validate visual parent on attaching to the tree by @maxkatz6 in #17049
- Begin with DisableRuntimeMarshalling support + fix macOS Metal AOT by @maxkatz6 in #17116
- Make UiThreadRenderTimer to calculate the next tick time based on expected FPS by @kekekeks in #17121
- Use epoll for dispatcher loop since it's more accurate with wait timeouts by @kekekeks in #17123
- [fbdev] Added a mode that should not waste time in FBIO_WAITFORVSYNC by @kekekeks in #17124
- Disable runtime marshalling for GetProcAddress by @maxkatz6 in #17136
Fixes
Expand
- Fix TemplateBinding and allow custom attributes in XamlValueConverter by @maxkatz6 in #14612
- Notify window on mouseEntered (mac only) by @ltetak in #15251
- Fix nth child selector in data grid header by @appel1 in #15482
- Fix SelectableTextBlock Selection by @xLEGiON in #15536
- Win32 - Fix EntendClient hints not being applied window show by @emmauss in #15552
- X11Window should probably ignore X11 grab focus events by @walterlv in #15686
- Try to normalize family names for embedded fonts by @Gillibald in #15703
- Propagate Dispose from GlyphTypefaceImpl to dispose SkTypeface by @lindexi in #15733
- Don't show text selector when no text is ready by @emmauss in #15770
- More trimming fixes, enable analyzers unconditionally by @maxkatz6 in #15815
- FontManager adjustments by @Gillibald in #15819
- Fix OnColorValuesChanged not executed on the UI thread by @Bezolt in #15827
- [Text] Multiple text processing fixes by @Gillibald in #15837
- Translate glyphRun bounds by the baseline origin by @Gillibald in #15839
- Apply Alignments to TileBrushes with uniform stretch by @emmauss in #15846
- [Text] Fix glyph offsets by @Gillibald in #15848
- Remove from logical children and clear item container on reset by @Meloman19 in #15855
- macOS: Don't include two windows in a11y tree. by @grokys in #15899
- Fix gesture event names by @wieslawsoltes in #15931
- [X11] Ensure XSync before calling CreateNativeControlCore by @kekekeks in #15952
- Fix #15955 by @nil4 in #16005
- Fix some issues with strokeless geometry segments by @grokys in #16019
- Fix tile mode used in SkShader for a TileBrush with None TileMode by @emmauss in #16021
- Fix TrayIcon menu crash by @logiclrd in #16024
- Fix crash in TreeView when removing a node. by @doubleday in #16041
- Enhance SplitPropertyPath to conditionally handle parentheses in prop. by @Abdesol in #16054
- Fix headless window transparency by @Rosentti in #16058
- Set isDirectory:true explicitly to help [NSURL fileURLWithPath] method by @maxkatz6 in #16061
- Fix HorizontalHeadTable usage by @Gillibald in #16064
- Win32 - Ensure owner topmost flag is set if its topmost when showing a owned window by @emmauss in #16104
- TrayIcon fixes by @jmacato in #16111
- DBus init and usage fixes by @kekekeks in #16119
- Reapply (#15568) + Updates by @jmacato in #16129
- Fix datagrid performance on attached to tree by @IZIDIA in #16140
- win32: Fix edge-case bug with DPI scaling by @grokys in #16143
- Fix XML child-value syntax in Setters by @maxkatz6 in #16153
- Toplevel - Fix system theme not being applied at launch on some platforms by @emmauss in #16159
- Fix embedded TopLevel coordinate conversion by @Gillibald in #16181
- Android - Add workaround for android 11 ime insets being weird by @emmauss in #16201
- [macOS][X11] Release mouse capture when dialog shown by @grokys in #16205
- Implemented
MultiBindingExpression
by @grokys in #16219 - Set InheritsTransform on ComboBox Popup in Simple theme by @maxkatz6 in #16244
- Win32 - Fix window size and position for border only window when maximized through OS means by @emmauss in #16297
- "About Avalonia" native menu item crashes app when main window is not visible by @maxkatz6 in #16303
- [Text] Fix infinite loop hang on selection of bidi text by @Mikolaytis in #16306
- Use culture identifier instead of CultureInfo in NameTable by @BobLd in #16310
- Only update selection on focus in TabControl if focus comes from TabItem. by @grokys in #16338
- Don't BringIntoViewOnFocusChange in Carousel. by @grokys in #16339
- macOS WindowState call on Show crash fix by @jmacato in #16341
- Fixes #16346 by @mpylon in #16347
- Fix headless screens by @maxkatz6 in #16348
- Fix transform desync by @Gillibald in #16363
- Fix Popup focus stealing for embedded controls by @Gillibald in #16365
- [WinRT] Added watchdog for ICompositor5::RequestCommitAsync by @kekekeks in #16393
- Forward pointer wheel event from scrollbar to scrollviewer by @emmauss in #16398
- Fix IME not working in some scenarios. by @kkwpsv in #16476
- Always use the matched typeface's weight, style and stretch by @Gillibald in #16489
- Fix typeface font simulations by @Gillibald in #16538
- [OpenGL] Fix #13807 - lingering glGetError from Avalonia by @Dragorn421 in #16539
- Fixup
GlxDisplay.CreateContext
by @Dragorn421 in #16540 - Fixes ShapedTextRun drawing by @Gillibald in #16545
- Apply NumericUpDown.FormatString changes immediately. by @pokorpa in #16575
- Extend the client area when a Win32 window is opened in maximised state by @TomEdwardsEnscape in #16593
- Fixes ShapedTextRun background rendering by @Gillibald in #16594
- Make sure GlyphRunImpl.InkBounds are always at a positive location by @Gillibald in #16601
- Win32 - Fix Window Frame Size and Position issues. by @emmauss in #16608
- fix: Button should not fire the click event on the space key when it is not active by @workgroupengineering in #16619
- Make popup focus stealing configurable. by @grokys in #16642
- feat(XamlX): Trim text before invoke Color.Parse by @workgroupengineering in #16649
- ColorPicker Simple Theme Fixes by @robloo in #16654
- Android - Input Connection fixes by @emmauss in #16666
- fix #12190, the name of FontFamily is null will cause crash by @JerryJian in #16677
- Ensure SurroundingText is empty for empty line by @MrJul in #16710
- Fix caret position after backspace by @MrJul in #16712
- Fix bindings without property path by @MrJul in #16729
- TitleBar.Height setter crashes integrational tests app by @maxkatz6 in #16735
- ComboBox Empty Selection should not Generate a TextBlock as SelectionBoxItem by @gehongyan in #16748
- Fixes geometry render bounds when curves are present by @MrJul in #16756
- Fix SimpleTheme for TimePicker by @VisualMelon in #16758
- fix: NativeMethods.txt by @workgroupengineering in #16780
- Fix stuck internal macOS modifier keys by @MrJul in #16788
- Fixed nearest font matching not working by @adirh3 in #16796
- Prevent .NET from randomly calling WndProc in RequestCompositionBatchCommitAsync by @kekekeks in #16804
- Add TypographicFamilyName to GlyphTypeface and use it for FontCollection by @Gillibald in #16844
- Vulkan - Fix display surface lost error by @emmauss in #16887
- Allow selection of multiple consecutive blocks in SelectingItemsControl. by @Brubning in #16907
- fix:
SplitButton.Click
is not fired whenSplitButton
is not in focused by @workgroupengineering in #16940 - Android - call base dispatch key event before called toplevel's override by @emmauss in #16969
- Android - fix selection bounds in TextEditBuffer by @emmauss in #16970
- Sync CaretIndex directly by @Gillibald in #16981
- fix(ToggleSwitch): only remove knob transitions when dragging by @jsimonsen in #16993
- [Text] Convert control codepoints into zero width space during shaping by @Gillibald in #17004
- XamlX update: IProvideValueTarget fixes and nested-types support by @maxkatz6 in #17021
- fix Automation.HelpText on windows by @ahopper in #17030
- [macOS] Fixes stuck mouse buttons after drag by @MrJul in #17035
- Fix parsing of XAML setters when the child isn't a text node by @MrJul in #17044
- Fix AutomationProperties.HelpText on macos by @ahopper in #17046
- Fix desktop lifetime non-mainwindow cancellation by @maxkatz6 in #17059
- Prevent AutoCompleteBox getting stuck in a state where it can't drop down. by @grokys in #17074
- Properly fixed DrawingContextProxy transform tracking by @kekekeks in #17101
- Fix HeadlessWindowImpl.Position does not persist new value by @loyvsc in #17103
- Fix WellKnownFolder.Downloads on Windows by @stevemonaco in #17107
- Add missing Screen.Equals/GetHashCode overrides by @MrJul in #17112
- Fix ClickOnce entry assembly not having Avalonia XAML compilation output by @TomEdwardsEnscape in #17115
- Unsubscribe the same handler with subscribed with in Dispatcher::ShutdownImpl by @kekekeks in #17122
- Fix missing Orientation check in VirtualizingStackPanel by @dbriard in #17135
- Execute Dispatcher.RunJobs after each headless NUnit test by @MrJul in #17140
- Fixed TabItem.ContentTemplate being reused for the next tab item by @TomEdwardsEnscape in #17141
- Use coercion for MaskedTextBox.Text by @MrJul in #17143
- Fixed publishing multi-architecture Android builds by @TomEdwardsEnscape in #17145
- Fix SplitView :closed pseudoclass not being added on control initialization #17176 by @OccVeneficus in #17178
- Fixes an issue that can cause Avalonia-based Windows applications to crash on termination by @ryannewington in #17190
- Do not reset text selection when the TextBox loses focus by @Gillibald in #17195
- Fix LayoutUpdated and EffectiveViewportChanged double registration by @MrJul in #17196
- Fixed an issue RTL wrapped text calculates an extra line for the control desired size by @dme-compunet in #17209
- macOS: Prevent crash with popups by @grokys in #17218
- Set TimePicker.Time seconds to zero when UseSeconds is False by @VisualMelon in #17251
- Fix ThemeVariant equality by @MrJul in #17257
- Rework how TextBlock skips redundant measure and arrange calls by @Gillibald in #17271
- Fix overlay popup focus issues by @MrJul in #17326
- Call layer.setNeedsDisplay on show by @grokys in #17096
Miscellaneous
Expand
- Simplify two if blocks into one by @heku in #14885
- Update ImageSharp to 2.1.7 by @MrJul in #14893
- Warning fixes by @MrJul in #14894
- Fix SYSLIB0051 warnings (binary serialization) by @MrJul in #14895
- Remove InternalsVisibleTo from Avalonia.Base to ControlCatalog by @MrJul in #14905
- Update readme.md by @MikeCodesDotNET in #14907
- Fix incorrect usage of ComboBox in control catalog ViewboxPage by @gehongyan in #14972
- Move ItemsRepeater to a dedicated repository by @maxkatz6 in #14989
- Switch version -beta to -alpha for nightly builds by @maxkatz6 in #14993
- Don't get the composition animation system involved in every property read by @kekekeks in #15110
- chore: remove repetitive words by @crazeteam in #15116
- Rename MobileSandbox to Avalonia.SingleProjectSandbox by @maxkatz6 in #15330
- chore: remove repetitive words by @careworry in #15427
- Fix ncrunch configuration. by @grokys in #15440
- Revert "Win32 - Fix EntendClient hints not being applied window show" by @maxkatz6 in #15562
- Revert "Bump DBus stack" by @jmacato in #15656
- Bump DBus stack take 2 by @affederaffe in #15685
- Respect global packages folder in BuildToNuGetCache by @MrJul in #15706
- Feature/opengl lease demo by @kekekeks in #15707
- Update readme.md by @MikeCodesDotNET in #16018
- [Text] Use CultureInfo.Name instead of ISOLanguageName for character matching by @Gillibald in #16053
- Update build.md for local nuget builds by @jmacato in #16116
- Update Appium tests readme.md by @maxkatz6 in #16134
- [Text] Use GetBackspaceCaretCharacterHit for backspace delete handling by @Gillibald in #16135
- Revert "Reapply (#15568) + Updates" by @kekekeks in #16175
- TrayIcon tests are flacky, disable them by @maxkatz6 in #16265
- Fix BaselineAlignment by @Gillibald in #16276
- Remove old API compat baseline files by @maxkatz6 in #16305
- Update pr_labels.yml by @maxkatz6 in #16416
- chore: fix some comments by @shangchenglumetro in #16461
- Android - Defer rendering till surface is created by @emmauss in #16616
- fix: SixLabors ImageSharp Out-of-bounds Write
CVE-2024-41131
by @workgroupengineering in #16620 - Fix typos in build messages when waiting to attach a debugger by @stevemonaco in #16701
- Housekeeping Update ReactiveUI and Rx base version by @ChrisPulman in #16719
- fix(Win32): PopupImpl memory leak by @workgroupengineering in #16890
- Remove invalid Properties folder reference in project by @heku in #16955
- Adjust diagnostic apis by @maxkatz6 in #17022
- Delete nuget.config from IntegrationTestApp by @MrJul in #17045
- Make our TileBrush code a bit less byzantine by @kekekeks in #17098
- Do not shape and render null terminator by @Gillibald in #17119
- Warning fixes: fall wave by @MrJul in #17180
- Make the name table optional by @Gillibald in #17306
- Add unit tests by @heku in #15367
- Warning fixes: spring wave by @MrJul in #15747
- Nullable annotations for projects using XamlX by @MrJul in #15796
- chore: update comimpl.h by @eltociear in #16011
- Merge same case branches by @heku in #16182
- Fix typos by @heku in #16183
- Fixed a typo by @heku in #16258
- Fix a Code Typo in XSharedDirectiveTests by @gehongyan in #16765
- feat: Enable Rule CA1851 by @workgroupengineering in #16779
Full Changelog: 11.1.4...11.2.0