* ensure system back event is passed to child page once
* fix formatting in DrawerPage
* add tests
* add back default page handler for system back event, but only check OnSystemBackButtonPressed
* removed `OnSystemBackButtonPressed` checks in derived page classes
* nav page - send back event to current page before modal pages.
* Fix modal-first system back routing in NavigationPage
---------
Co-authored-by: Javier Suárez Ruiz <javiersuarezruiz@hotmail.com>
Addresses path traversal vulnerability GHSA-6c8g-7p36-r338
(CVE in IArchive.WriteToDirectory) which affects all versions
<= 0.47.4. Version 0.48.0 is the first non-vulnerable release
per the NuGet vulnerability API.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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