If developers changed the nuget global packages folder by set NUGET_PACKAGES environment variable to a path without trailing slash, they may have a build error like this, refer to https://github.com/PrismLibrary/Prism/issues/2369
* Add accessibility ID to the TrayPopupRoot on Windows
* [Windows] Add left click and menu item click e2e tests for TrayIcon
* [Windows] Add TrayIcon visibility toggle tests
* Implement macOS tray icon tests
* Make it easier to read tray icon logs
* Try to handle win10 accessibility names
* Try to upload PageSource
* Set condition: always
* Hopefully, it works on CI
* Try to upload PageSource #2
* Fix win10, hopefully for the last time
* Add a failing test for #15712.
* Validate StartU at the start of a measure pass.
If any container U size has changed since the last layout pass then `StartU` must be considered unstable as the average container height will have changed.
* Correctly position focused element.
If the focused element has been moved outside the visible viewport due to a realized container size change, then we need to ensure it's positioned correctly.
* We can skip check if StartU is already unstable.
* Don't invalidate virt. panels more than necessary.
* Add another virt panel test.
And revert the expected results for another test to the way they were at the beginning of this PR.
* Tweak container size estimation.
Use the desired size of _measured_ containers instead of the bounds: a layout pass may not had completed on the containers yet, so the bounds may not be up-to-date. Was easier to move the estimation methods out of `RealizedStackElements` and into `VirtualizingStackPanel` itself in order to do this, and arguably makes more sense.
* Adds seconds support to TimePicker.
* Updates TimePicker to support UseSeconds. Seconds are not displayed unless UseSeconds == true.
* Fixes & updates Unit Tests related to adding Seconds & UseSeconds to TimePicker.
* Adds a simple TimePicker with seconds enabled to DateTimePickerPage.xaml.
* Enable IncludeAvaloniaGenerators on integartion tests app
* Implement basic TitleBarAutomationPeer
* Add WindowDecorationsTests (windows only for now)
* Implement window decoration tests on macOS
* Fix build on appium 1
* Fix some windows tests
* Extract WindowDecorationsTests into a separated collection, so it won't conflict
* Fix build
* Fix build
* Updated the TrayIcon in IntegrationTestApp to have an associated menu.
Updated App.axaml.cs to set the DataContext for binding and provide a command implementation.
Added a project reference to Avalonia.ReactiveUI.
* Updated CanExecuteChanged in NativeMenuItem.cs to thunk to the UI thread if it ends up running on a non-UI thread.
* Replace ReactiveUI with MiniMvvm to simplify integration tests app
---------
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* ensure owner topmost flag is set if its topmost when showing a owned window
* add comments on why HWND_TOPMOST is set again
* add Topmost with owned window integration tests
* fix tests
* Add InheritDataTypeFromAttribute and use it in TemplateBinding
* Add failing tests for TemplateBinding depending on a scope
* Update XamlX and RoslynTypeSystem
* Add missing interface implementations
* Improve errors readability in XamlAvaloniaPropertyHelper
* Use more specific TryGetCorrectlyTypedValue overloads
* Finally, respect InheritDataTypeFromAttribute in the AvaloniaProperty parser
* Add some docs
* Output better exception
* Update XamlX
* Add missing docs
* Add attribute to well known types
* Add Correctly_Resolve_TemplateBinding_In_Theme_Detached_Template test and fix ColorPicker usage
---------
Co-authored-by: Steven Kirk <grokys@users.noreply.github.com>
* Add tests for binding negation operator.
Expected results come from 11.0.x branch.
* Unset and null need to be distinct.
Also remove `ExpressionNode.Reset` as it was doing unneeded stuff and should just be the same as `SetSource(AvaloniaProperty.UnsetValue, null);`.
* Make ExpressionNode.OnSourceChanged accept null.
The previous design assumed that a source of `null` was an invalid input to all types of expression nodes. It turned out that there was a single exception to this rule: the `!` operator can in fact operate on a null value. With this new design we instead have to explicitly check for a null value in every override of `OnSourceChanged ` except in `LogicalNotNode`.
Due to this change, we also have to distinguish between `null` and `(unset)` in `ExpressionNode.SetSource` as well.
Fixes#16071
* Fix comment.
* Add failing test for #16113.
* Convert delegate to ICommand in style setter.
When compiling a binding to e.g. `Button.Command` in a style `Setter`, we were not converting `XamlIlClrMethodPathElementNode` to `XamlIlClrMethodAsCommandPathElementNode` as we were only testing whether the property that the binding was being assigned to is an `ICommand`.
If we detect that we're assigning the binding to a `Setter.Value` then we need to look in the `Setter.Property` to see check whether the property is an `ICommand` too.
Fixes#16113
* Remove from logical children and clear item container on reset (similarly like OnItemsChanged.Remove)
* Add simple test
---------
Co-authored-by: Meloman19 <23280622+Meloman19@users.noreply.github.com>
* Don't include two windows in a11y tree.
`AvnRootAccessibilityElement` has been removed and now `AvnWindow` handles the accessibility protocol itself, exposing its children via the `AvnView`.
* Remove hack now that issue is fixed.
* Fix build errors after merge.