* Add FuncValueConverter with parameter support
* Fix summary comment
* Fix summary comment
* Add Equal and NotEqual converters to a ObjectConverters class
* Fix condition for Equal
* Added ObjectConverters unit tests
* Add Points binding observability support for Polygon and Polyline
* Add simple tests for Polygon and Polyline Points updating
* Revert "Add Points binding observability support for Polygon and Polyline"
This reverts commit e16d987945.
* Move Geometry.Changed handler to Shape class to make it available to all inheritors
* Fixes the event subscriptions
* Fix tests
* Add memory leak tests
* Added failing test for #14753.
* Don't try to publish on non-running binding.
This can happen in cases like #14653 where:
1. An event is raised with 2 binding expression subscribers
2. The first subscriber causes the 2nd subscriber to be stopped
3. The second subscriber is called from the event, even though it has been stopped (as the event list was cached at step 1)
4. It calls `PublishValue` causing an exception
Easiest to just do nothing in `PublishValue` when this scenario happens.
* Don't create a layer if the previous frame is retained by the render target
* D2D
* compile
* Only check PreviousFrameIsRetained if not using layer
* ABI
* Add .NET 8 target to packable projects
* Update test projects
* Update sample projects to target .NET 8
* Update main Avalonia package to target .NET 8 as well
* Remove MSBuildEnableWorkloadResolver hack and some minor change
* Use net8.0 in nuke build as well
* Pin 8.0.0 SDK
* Adjust API validation
* Pin a valid version
* Remove net461 target from Avalonia package
* Remove unused net6.0 target from Avalonia.Designer.HostApp
* Adjust API diff
* Update ControlCatalog.Android.csproj
* Remove MSBuildEnableWorkloadResolver
* Fix Browser issues on .NET 8
* Fix .NET 8 error
* Fix merge conflicts
* Replace explicit TFMs in .csproj files with a centralized registry
* Fix merge conflict
* Fix AvsLegacyWindowsTargetFrameworks and add hacks for the tests
* Update XCode project CommandLineArgument
---------
Co-authored-by: Nikita Tsukanov <keks9n@gmail.com>
* Do not defer resources with name registration on them
* Fix transformers order
* Make NameScopeRegistrationVisitor usage more clear
* Reuse NameScopeRegistrationVisitor
* Make NameScopeRegistrationVisitor usage more intuitive
* Update ncrunch config.
* Add tests for converting strings to brushes.
* Make complied bindings use TypeConverters.
Certain conversions rely on type converters, which were disabled in compiled bindings since #13970 due to warnings that type converters are not trimming friendly.
Ideally we'd be generating the type conversion logic in the XAML compiler, but in reality the problem with type converters and trimming is limited to type converters with generics, which is an edge case.
For the moment re-enable the usage of type converters in compiled bindings until we implement generating the conversion code in the XAML compiler.
* Avoid hardcoding strings in DateTimePicker cs files
* Add invariant resources
* Implement ResourceProvider for flexibility of localization with custom resource provider
* Fix these weird tests
* Seal some ResourceDictionary extension points
* Replace "Locale" with "String"
* Fix AvaloniaSynchronizationContext always using UIThread
* Fix DispatcherOperation TaskSource initialization which caused some exception to be swallowed
* Implement Dispatcher.UnhandledException and Dispatcher.UnhandledExceptionFilter
* Add new internal Dispatcher.Send method without async semantics, use it in SyncContext
* Add tests, partially ported from WPF
* Make Input events go through Dispatcher.UIThread.Send
* Make Dispatcher.ExceptionDataKey internal, so it can be used in XPF
* Some Dispatcher.Send fixes
* Fix Headless tests after SynchronizationContext changes (it relied on global UIThread)
* Fix Send InvokeImpl usage
* Do not wrap AvaloniaSynchronizationContext.Ensure in the Send
---------
Co-authored-by: Nikita Tsukanov <keks9n@gmail.com>
* Avoid constantly recompiling Avalonia Xaml files by implementing incremental build checks
- Should be a (or even the) fix for file permission errors during builds
CompileAvaloniaXaml no longer overwrites the Compile output, but creates its own output files
- This supports incremental build checks and is safer in general
Removed unused executable features from Avalonia.Build.Tasks
- This is instead of refactoring for the new ITaskItem properties
Updated Desktop SLNF
* Fixed tests
* Touch each copied output file
* Fixed relative mapping mode for brushes (skia only, pending radial)
* Implemented separate RadiusX/RadiusY with proper mapping modes for RadialGradientBrush
* tests for conic brush
* Added tests for geometry drawing
* Updated DrawingBrush test image since it now matches WPF
* Update obsolete property usage
* Fixed D2D, updated radial test with D2D results that actually match WPF ones
* Fixed RadiusX/Y for radial gradients with non-centered origin
* Updated obsolete property usage
* Code cleanup
* Typo
* ApiDiff suppression
* Removed files for skipped test
* More info in obsoletion warning
* clarify
---------
Co-authored-by: Jumar Macato <16554748+jmacato@users.noreply.github.com>
* Discard additional lines upon inserting when AcceptReturn=false
* Use LineBreakEnumerator for detecting line breaks
* Remove unused member
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* Use Grapheme enumerator
---------
Co-authored-by: Markus <markus@mlet.at>
Co-authored-by: Max Katz <maxkatz6@outlook.com>
Co-authored-by: Benedikt Stebner <Gillibald@users.noreply.github.com>
* Added failing tests for #12733.
* Clear SkipLostSelection on batch update start.
If `Source` is changed during a collection update, then the `Clear()` operation will not be committed immediately due to `_isSourceCollectionChanging` being set. In this case, `update.Operation` will still have `SkipLostSelection == true`, meaning that `LostSelection` will not be raised, causing #12733. Clear the flag manually each time `BeginBatchUpdate` is called to avoid this.
Fixes#12733
---------
Co-authored-by: Max Katz <maxkatz6@outlook.com>