* Mark RenderWorker as internal
* Add remaining Fonts.Tables types as internal
* Mark new diagnostic APIs as a PrivateAPI
* Restore old GetStyleDiagnostics APIs, but mark them with [PrivateApi], avoiding breaking changes
* Add CustomPopupPlacement API
* Add Placement="Custom" support for Flyout, ToolTip and ContextMenu controls as well
* Adjust some API changes
* Add Avalonia.Controls.Primitives.IPopupHost.ConfigurePosition breaking change
* Extract new types into separated files
* Fix build after merge conflict
* Adjust nupkg.xml
* Dispose property subscriptions after popup is closed, avoiding flickering
* Adjust API to be more future proof and add new parameters.
* Add new ContextRequestedEventArgs overload while I am on it
* Improve: X11 Startup time with asynchronous Gfx Startup
Before: 80-100
After: 66-81
* Changed: Move CursorFactory Back to its Place
* Changed: An alternative attempt with lazy cursor generation.
* Bump DBus stack
- Use new Variant system
* Fix merge issues
* Intentionally break the DBus spec
* Dispose DBus connection and signal watchers
* Bump Tmds,DBus.Protocol
* Dispose DBus objects correctly
* Use PathHandler for DBus objects
* Revert to old initialization
* Bump DBus packages
* Fix global menu
* Add comment about wrapped variants
* Bump Tmds.DBus.SourceGenerator
* Update api baseline
* Bump Tmds.DBus stack
---------
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* test: Check that the button should not fire the click event on the space key when it is not active
* fix: Button should not fire the click event on the space key when it is not active
* fix: Address review
* send enter key event on soft keyboard action
* reset composition region when text buffer is updated
* update input connection state when batch edit ends
* Android screen implementation, using Display API (with some fallbacks)
* Browser screen implementation, aditionally add JSObjectPlatformHandle
* iOS screens API implementation with UIScreenPlatformHandle
* Tizen screens implementation, pretty limited but should be better than nothing
* Reduce some API changes to make them more portable in the future
* Update api suppression
* Basic failing unit test for UWP/WinUI XYFocus search boundary scenario.
* Change IsAllowedXYNavigationMode to return false if keyDeviceType is null and modes == disabled.
* Add helper function to find the closest InputElement to the target element whose parent does not allow XYFocus rather than always searching from the TopLevel. This restricts focus searches within a specific subtree rather than allowing searches to bridge subtrees that share an XYFocus disabled parent.
* Update BindingBase.Instance signature.
- Swap `target` and `targetProperty` order to make it consistent with other similar methods
- Make `targetProperty` nullable as it will need to be null for `MultiBinding`
* IBinding2.Instance needs to accept a null target property.
It will need to be null for `MultiBinding`.
* Attach needs to accept a null target property.
It will need to be null for `MultiBinding`.
* Initial implementation of MultiBindingExpression.
* Fix failing template binding test.
Only publish unset value if we've already published a value.
* Enabled nullability annotations.
* Added passing test for #16084.
* Remove obsolete API usages.
* Bind to Tag not Text.
Prevents test passing when it shouldn't. See https://github.com/AvaloniaUI/Avalonia/pull/16219#discussion_r1665466968
* Handle DoNothing in MultiBindingExpression.
* Added Compositor.CreateCompositionVisualSnapshot API
* Hurr durr api compat in [Unstable] interface
---------
Co-authored-by: Max Katz <maxkatz6@outlook.com>
Toggling the window decorations can cause the window to be moved off screen, causing integration test failures. Until this bug is fixed, detect this and move the window to the screen origin. See #11411.
* Added embedding page to IntegrationTestApp.
Currently embeds a lone native text box, and only when running on Windows.
* Win32 automation support for native control host.
Allows native controls to appear in the Avalonia automation tree as a child of the `NativeControlHost`. They also appear in the _wrong_ place - as a direct child of the `Window` - but this appears to be expected behavior as it happens when hosting a win32 control in WPF as well.
* Basic native control integration test on win32.
* Test editing native win32 control in popup.
* Add embedded text box on macOS.
* macOS automation support for native control host.
Implements special-casing of `InteropAutomationPeer`on macOS.
* Make native control integration test work on macOS.
The test for the native control in a popup is disabled on macOS because we have a bug there.
* Add missing parts
* Fix build error
* Skip test to see if CI passes again.
* Log more info about integration tests on win32.
* Try to fix flaky test.
* The tests won't yet work on macOS yet.
Will require #16577.
---------
Co-authored-by: Benedikt Stebner <Gillibald@users.noreply.github.com>
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* Fixed overlay popups not automatically closing
* Fix overlay tooltip tests not actually generating overlay tooltips
Verify popup type whenever we verify that the popup is open
* Fixed overlay tooltips not being attached to the visual tree in tests
* Record video for failing win32 integration tests.
* Be more specific when selecting the test dll.
https://github.com/microsoft/vstest/issues/3939
---------
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
* Refactor IntegrationTestApp.
Use a `ListBox` to switch pages instead of a `TabControl`: the `TabControl` didn't adapt well to smaller screen sizes, and the `MainWindow` was getting unwieldy anyway.
* Update tests to use new pager.
Move logic for selecting the page to a base class as we may need to handle scrolling manually on macOS at some point (Appium on macOS doesn't scroll elements into view automatically).
* Add AutomationPeer.IsOffscreen.
This is needed in order for controls to be scrolled into view using WinAppDriver. The default is the same as WPF and the default value is overridden in the same controls as WPF (where present).
* Change namespace to prevent conflicts.
The `DataGrid` in the namespace name was hiding the `DataGrid` type.
* Initial impl of bindable DataGridRow.IsSelected.
* Make DataGridRow.IsSelected two-way bindable.