Return null when an IPresentationSource can't convert from/to screen coordinates
Document exceptions in VisualExtensions PointToClient and PointToScreen
Add tests for cross-root pointer event positions
* Run Win32 file picker on a dedicated thread to avoid MTA deadlock
* Add threading comment in Win32StorageProvider
---------
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
* Update HarfBuzzSharp and SkiaSharp package versions
https://github.com/mono/SkiaSharp/releases/tag/v3.119.4-preview.1.1
SkiaSharp v3.119.4-preview.1.1 has many features:
Add SkiaSharp.Views.Gtk4 using GirCore.Gtk-4.0 bindings
Add Linux Bionic native assets support, that can make high-performance Android application
Add PolySharp for C# 13 support on legacy TFMs
Add Tizen x64 and arm64 native build support
Delay-load D3D12 DLLs to prevent crashes on systems without DX12
Bump Skia milestone from 119 to 133
* Restore HarfBuzzSharp version
* Fix headless cleanup race: dispose before signalling TCS (#20664)
Restructure DispatchCore<TResult> so application.Dispose() runs in a
finally block before tcs.TrySet* is called. Previously, the using-var
scope closed after TrySetResult, leaving s_uiThread set when the next
non-headless test started.
Adds a regression test in IsolationTests that verifies Dispatcher.UIThread
is accessible from the calling thread immediately after a headless dispatch
completes (PerTest isolation only).
* Use Assert.SkipWhen in Dispatch_Cleanup_Should_Complete_Before_Task_Returns
* Restrict Dispatch_Cleanup_Should_Complete_Before_Task_Returns to NUnit
xUnit's AvaloniaFactDiscoverer wraps every [Fact] in session.Dispatch,
so awaiting another session.Dispatch inside the test body deadlocks on
the session's single background thread.
* Remove new test
It isn't reliable enough during CI.
---------
Co-authored-by: Jumar Macato <16554748+jmacato@users.noreply.github.com>
* mark ToplevelImpl._view as nullable.
* Update src/Android/Avalonia.Android/Platform/SkiaPlatform/TopLevelImpl.cs
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* return 1 as default scaling in android TopLevelImpl
---------
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* Truncate the content when writing
To maintain consistency with other operating system APIs, see: https://github.com/AvaloniaUI/Avalonia/pull/20804 & https://github.com/AvaloniaUI/Avalonia/pull/20807
* Prevent accidental truncation when creating files
* Update comments
* Validate existing item type when creating storage
* Truncate files on creation in storage items
---------
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
* fix safe area calcs for navigation page
* update nav bar effective height on safe area change
* reset nav bar height if visibility changes
* add tests
* Fix Metal renderer memory leakage on macOS
* Remove no-op ResetContext call
* Disposable wrapper
* Success flag in ctor to dispose
* Rename variable name to _autoReleasePool
* Abstraction over AutoReleasePool
* Use Interlocked.Exchange in AutoReleasePool
---------
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
* Fix#20816: OneWay binding fails to update target after local change
When a OneWay binding target is modified locally (e.g., via user
interaction on a ToggleButton), subsequent PropertyChanged events from
the source were being ignored. This occurred because the binding
expression incorrectly suppressed the update.
This patch modifies UntypedBindingExpressionBase to ensure that OneWay
bindings always propagate changes from the source to the target,
overriding any previous local changes. Unit tests were also added to
prevent future regressions on this behavior.
Signed-off-by: Martim Claudino <martimffclaudino@tecnico.ulisboa.pt>
* fix: scope forceUpdate to OneWay mode, use SetCurrentValue in tests and clean usings
Signed-off-by: Martim Claudino <martimffclaudino@tecnico.ulisboa.pt>
---------
Signed-off-by: Martim Claudino <martimffclaudino@tecnico.ulisboa.pt>
* Win32: fix None/BorderOnly maximized position on secondary screens
* Fix WindowCustomizationsPage
* Use correct screen when minimized
* Fallback to nearest monitor
* Announce changes to live regions on macOS
It is necessary to manually request announcement of the new name of a live
region, alongside posting the general kAXLiveRegionChangedNotification.
* Refactor -raisePropertyChanged: to use switch statement
* Fix warning about switch not covering all cases
---------
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
* fix: focus correct date selector for day-first locales in DatePickerPresenter
SetInitialFocus had a copy-paste bug where the day-first branch
focused _monthSelector instead of _daySelector. This caused every
locale that puts day first (UK, Europe, Australia, India — dd/MM/yyyy)
to focus the wrong selector when the picker opened.
Refactored the three near-identical if/else branches into a
data-driven loop that pairs each host panel with its selector,
making this class of copy-paste bug structurally impossible.
* chore: retrigger CI
* chore: retrigger CI
---------
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
* fix: check format key in DataTransferItem.FindAccessor single-item path
The single-item fast path in FindAccessor returned the stored value for
any format query without checking if the requested format matched.
This caused TryGetRaw to return wrong data when queried with a format
different from the one stored (e.g., querying Bitmap on a text-only item
returned the text value instead of null).
Add the missing singleItem.Key.Equals(format) check, consistent with
the dictionary path (TryGetValue) and RemoveCore.
* chore: retrigger CI
* chore: retrigger CI
---------
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>