* 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>
* Update VirtualizingCarouselPanel.cs
Changes the calculation of the "forward" flag for the page transition to enable seamless forward and backward transitions.
* Update VirtualizingCarouselPanel.cs
Added Check for more than 2 items in carousel as there is actually no way to determine the correct transition with only 2 items. If there are only 2 items the transition behaviour is not changed.
* Update VirtualizingCarouselPanelTests.cs
Added Unit Tests for cycling through list forward and backward
* Added more OneWayToSource tests.
One of whom is failing.
* Don't public value for OneWayToSource bindings.
Looks to have been a brainfart. This allows `OneWayToSource` bindings to read-only properties.
* Added failing tests for #14456.
And one passing test.
* Handle converted compiled binding nodes...
...without a path. Previously the `convertedNode` was being discarded if the binding node had no arguments or property value assignments.
Fixes#14456
* Init
* Remove XY navigation cache as it's no use
* Use pooled collection for XY navigation
* Restructure code a bit, fix IScroller handling
* Init KeyboardNavigationTests_XY tests
* Simplify XYFocus.GetNextFocusableElement usage
* Minor fixes
* Add more tests
* Remove unused NuiKeyboardNavigationHandler
* Finalizing
* Fix tests
* Add TODO12
* Make XYFocusOptions a class
* Add TestServices.FocusableWindow and make KeyboardNavigationHandler lazy, as it can't be reused on multiple windows
* Fix KeyboardNavigationHandler events handling, when focus was not actually changed
* Add arrow key tests
* Replace XYFocusKeyboardNavigationMode with more flexible XYFocusNavigationModes, integrate with KeyDeviceType input types
* Make XY focus navigation less broken, when there is no starting focused control
* Several Android TV compatibility improvements
* Remap tizen Back button to Esc
* Introduce internal XYFocusHelpers
* Make ComboBox and AutoCompleteBox handle Key events only when it's needed
* Make TextBox handle Key events only when it's needed
* Ignore Alt+Down when XY navigation is enabled in CalendarDatePicker and SplitButton
* Rename IsAllowedXYNavigationMode
* Fix ButtonSpinner with XY navigation
* Implement a very simple focus engagement for GridSplitter and Slider