They implicitly create a new `MediaContext` via the following stacktrack, which can break subsequent tests:
```
Avalonia.Media.MediaContext..ctor(Dispatcher dispatcher) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\Media\MediaContext.cs:line 44
at Avalonia.Media.MediaContext.get_Instance() in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\Media\MediaContext.cs:line 68
at Avalonia.Layout.LayoutManager.QueueLayoutPass() in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\Layout\LayoutManager.cs:line 356
at Avalonia.Layout.LayoutManager.InvalidateMeasure(Layoutable control) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\Layout\LayoutManager.cs:line 73
at Avalonia.Layout.Layoutable.AncestorBecameVisible(ILayoutManager layoutManager) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\Layout\Layoutable.cs:line 837
at Avalonia.Layout.Layoutable.OnPropertyChanged(AvaloniaPropertyChangedEventArgs change) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\Layout\Layoutable.cs:line 803
at Avalonia.Input.InputElement.OnPropertyChanged(AvaloniaPropertyChangedEventArgs change) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\Input\InputElement.cs:line 661
at Avalonia.Controls.Control.OnPropertyChanged(AvaloniaPropertyChangedEventArgs change) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Controls\Control.cs:line 533
at Avalonia.AvaloniaObject.OnPropertyChangedCore(AvaloniaPropertyChangedEventArgs change) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\AvaloniaObject.cs:line 649
at Avalonia.Animation.Animatable.OnPropertyChangedCore(AvaloniaPropertyChangedEventArgs change) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\Animation\Animatable.cs:line 191
at Avalonia.AvaloniaObject.RaisePropertyChanged[T](AvaloniaProperty`1 property, Optional`1 oldValue, BindingValue`1 newValue, BindingPriority priority, Boolean isEffectiveValue) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\AvaloniaObject.cs:line 700
at Avalonia.PropertyStore.EffectiveValue`1.SetAndRaiseCore(ValueStore owner, StyledProperty`1 property, T value, BindingPriority priority, Boolean isOverriddenCurrentValue, Boolean isCoercedDefaultValue) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\PropertyStore\EffectiveValue`1.cs:line 235
at Avalonia.PropertyStore.EffectiveValue`1.SetLocalValueAndRaise(ValueStore owner, StyledProperty`1 property, T value) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\PropertyStore\EffectiveValue`1.cs:line 74
at Avalonia.PropertyStore.ValueStore.SetLocalValue[T](StyledProperty`1 property, T value) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\PropertyStore\ValueStore.cs:line 220
at Avalonia.PropertyStore.ValueStore.SetValue[T](StyledProperty`1 property, T value, BindingPriority priority) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\PropertyStore\ValueStore.cs:line 196
at Avalonia.AvaloniaObject.SetValue[T](StyledProperty`1 property, T value, BindingPriority priority) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\AvaloniaObject.cs:line 336
at Avalonia.Visual.set_IsVisible(Boolean value) in D:\projects\AvaloniaUI\Avalonia\src\Avalonia.Base\Visual.cs:line 233
```
* add IsEffectivelyVisible test
* test IEV update
* update self and descendants
* sync from parent's isvisible and own on attach/detach
* update test
* update from review
* add comments
* remove whitespace changes
* Added some more IsEffectivelyVisible tests.
One failing.
* Rework UpdateIsEffectivelyVisible.
- Pass the parent state to `UpdateIsEffectivelyVisible`
- Remove some unneeded methods
- Update `IsEffectivelyVisible` before calling visual tree attach/detach events.
---------
Co-authored-by: Steven Kirk <grokys@users.noreply.github.com>
* Add initial metal support for iOS
* Make iOS backend compilable with TVOS and MacCatalyst
* Enable nullable and fix almost all warnings in iOS project
* Implement keyboard and remote (+touch) input on iOS and tvOS
* Disable Metal for now
* Fix warning
* Add tvOS target for Avalonia.iOS
* Include tvos workloads
* Don't use WebKit on tvOS samples
* Extend StandardRuntimePlatform with more apple platforms
* Handle mouse and stylus for iOS backend as well
* And IntermediatePoints
* Fix compatibility warnings
* Respect t.MaximumPossibleForce
* Make ControlCatalog.IOS work with both iOS and tvOS
* Exclude compiled files using csproj instead of #if directives
* Make Metal rendering actually usable
* No need for buffer.WaitUntilCompleted on iOS here
* Add StartWithClassicDesktopLifetime overload with a lifetime builder
* Disallow changing Application.ApplicationLifetime after setup was completed
* Avoid static dependency on a singleton lifetime
* Introduce SetupWithClassicDesktopLifetime method
* Move more logic from Start method to Setup
* Add docs
* Avoid public API changes
* Fix tests
* Repalce locator usage with `.UseLifetimeOverride`
---------
Co-authored-by: Benedikt Stebner <Gillibald@users.noreply.github.com>
* Don't overwrite IsClipEnabled.
The user should be able to set this on an adorner themselves.
* Use correct clip bounds for adorners.
Only take the adorned visual's clip bounds into account if the adorner is clipped to these bounds.
* Disable clipping on GridSplitter adorner.
Fixes#10700
* Don't clip adorners in ControlCatalog.
Default setting is `true`, but this was being overridden in `AdornerLayer.AddVisualAdorner`. That was fixed by an earlier commit in this PR, so property needs to be set explicitly to false in ControlCatalog.
* add tv support to form factor
* Resolve comments and add chromium book
* Add some documentation
---------
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* Add an item with null values to the SelectingItemsControl test data
* Fixed NullReferenceException when SelectedValueBinding evulates to null
Fixed SelectedValue bindings being overwritten when a new item is selected
* Add an event so that users can detect when an Application icon is clicked.
* refactor to use Lifetime apis.
* use ActivationKind instead of reason to be consistent with other xaml platforms
* implement macos raise url events.
* add docs.
* add apis to programatically Activate and Deactivate the application.
This allows the dock icon to be kept in sync so its menu options there say "Hide" / "Show" correctly.
* fix api naming.
* Add Browser IActivatableApplicationLifetime impl
* Implement IActivatableApplicationLifetime on Android
* Add IActivatableApplicationLifetime iOS implementation
* Adjust android impl a little
---------
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* Add key device type and implmentation for tizen #12992
* Add device key type to Android
* Resolve comments
---------
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* Avoid hardcoded FontSize and other Font properties that can be inherited
* Avoid TemplateBinding, when Font property can be inherited
* Improve Calendar font customization a little
* Opps
* perf(Android): Avoid allocation of object array
Avoid allocating a new array of objects when the Compositor enumeration the surfaces
* fix: Address review
* Adds the ImmutablePenWithDynamicBrush and fixes Border and Shape border re-rendering when changing Brush value
* Removes the ImmutablePenWithDynamicBrush, rollback to Pen
* Cache and reuse Pen
* Move all Pen's updating logic to Pen.TryModifyOrCreate
* Add some tests for Pen.TryModifyOrCreate
* Add proper handling for DashStyle
* Invert condition in Pen.TryModifyOrCreate, fixes the logic
---------
Co-authored-by: Max Katz <maxkatz6@outlook.com>
Co-authored-by: Tim <47110241+timunie@users.noreply.github.com>