* Merge core libraries.
Everything below `Avalonia.Controls` into `Avalonia.Base`.
* Move new files to correct place.
* Removed unused dirs/projects,
* Removed outdated references from theme assemblies.
* Merge unit tests to match new assembly layout.
* Fixup test namespaces.
* Make directory match namespace.
* Move files to match namespace.
* Move files to match namespace.
* Fix up incorrect namespace.
`Avalonia.Visuals.Media.Imaging` -> `Avalonia.Media.Imaging`.
* Fix resource URL.
* Removed outdated dependencies.
* Added missing project reference.
* Update test namespaces.
* Fix merge error.
* Fix merge errors.
* Fix bad merge in WindowsInteropTest.csproj.
* Fix up merge errors in csprojs.
* Remove merged tests from nuke.
* Fix up namespace.
* Fix compile error.
* Fix failing tests.
Now that more unit tests are present in Avalonia.Base.UnitTests, general `AvaloniaObject` properties are getting registered. Ignore those.
Co-authored-by: Jumar Macato <16554748+jmacato@users.noreply.github.com>
* Add nullable annotations...
...to `AvaloniaObject`/`AvaloniaProperty`-related classes and a few other uncontroversial files.
* Check for null before first use.
* Don't need this check as base class does it.
Handle changing a `Transitions` collections to new collection which contains some of the same elements.
Added a comment explaining why we add new transitions before replacing old transitions; was explained in the commit message for 0694b22c51.
When transitions are replaced, add the new transitions before removing the old transitions, so that when the old transition being disposed causes the value to change, there is a corresponding entry in `_transitionStates`.
Also search the `Transitions` collection from last to first to find a matching transition, so that later added transitions have priority.
Fixes#4059
This requires that a `<Transitions>` element is used to contain the transitions in XAML and a `new Transitions()` is used when assigning transitions from code.
`Visual` knows when it's attached to the visual tree, so it can enable transitions then.
This is a hack due to the fact that non-Visuals currently don't know when to enable transitions.
- Don't apply transitions before control is added to the visual tree
- Don't allow transitions on direct properties
- Ignore animated values when determining whether to trigger a transition
- Cancel transition when removed from `Transitions` collection
- Pass information for all property changes to `OnPropertyChangedCore`; whether they result in an effective value change or not
- Added `GetBaseValue` to get a value with a specified priority
- Change the signature of `OnPropertyChanged` again to take an `AvaloniaPropertyChangedEventArgs<T>`