When opening a context menu and pressing the "arrow down" key, the first menu item was not selected. This issue was introduced by #11287. The fix is to make the `ContextMenu` focusable.
Added an integration test to try to prevent regressions.
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* Set isDirectory:true explicitly to help [NSURL fileURLWithPath] method
Might solve some rare/random issues with initial directory not being applied
* Fix dialogs page incorrectly setting parent folder
* Move SecurityScopedStream out of iOS project and share it with macOS project
* Refactor BclStorageItem to be more reusable across platforms
* [Breaking] Set BclStorageItem.CanBookmark to false, as it never was supposed to be true. Plain BCL doesn't provide files bookmarking.
* Reimplement storage provider support on macOS, support (optional) sandboxing
* Fix build
* Fix AppSandboxEnabled=false usage
* Re-enable BCL bookmarks, keep them base64
* Fix nullable error
* Prefix all bookmarks with a platform key
* Fix devtools breaking sandboxed app
* Try to read errors after saving bookmark
* Don't crash sample app if has no access
* Add internal IStorageItemWithFileSystemInfo abstraction
* Log information if OpenSecurityScope returned false
* Fix build
* Prefix bookmarks with "ava.v1."
* Support opening old-style bookmarks to avoid breaking changes
* Draft new API
* Push reusable ScreensBaseImpl implementation
* Fix tests and stubs
* Update ScreensPage sample to work on mobile + show new APIs
* Reimplement Windows ScreensImpl, reuse existing screens in other places of backend, use Microsoft.Windows.CsWin32 for interop
* Make X11 project buildable, don't utilize new APIs yet
* Reimplement macOS Screens API, differenciate screens by CGDirectDisplayID
* Fix build
* Adjust breaking changes file (none affect users)
* Fix missing macOS Screen.DisplayName
* Add more tests + fix screen removal
* Add screens integration tests
* Use hash set with comparer when removing screens
* Make screenimpl safer on macOS as per review
* Replace UnmanagedCallersOnly usage with source generated EnumDisplayMonitors
* Remove unused dllimport
* Only implement GetHashCode and Equals on PlatformScreen subclass, without changing base Screen
* 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
* 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
* Make resizing work again
* Fix various DOM events on multithreading
* Refactor WASM input to work with multithreading
* Minor improvements for drag n drop
* Use Microsoft.NET.Sdk.WebAssembly in control catalog browser
* Shortcut resolved exports
* Fix DomHelper.GetCurrentDocumentVisibility not working
* Fix embed sample
* Remove ManualTriggerRenderTimer
* Use pre-saved globalThis instance to make sure that JSImport interop works on a correct threading context
* Implement managed dispatcher for browser with event grouping
* Fix InputHelper.GetCoalescedEvents usage
* Nits after review
* Fix duplicated trimming attributes warning in Markup.Xaml.Loader
* Fix nullability warnings
* Update ImageSharp to 2.1.8
* Removed obsolete attributes on ValueStore
* Ignore CA1815 on private API RenderTargetProperties
* Fix switch expression warnings
* Fix warnings in Vulkan project
* Only include PThread for WasmEnableThreads
* Rename pollfd to PollFd to fix CS8981
* Fix incompatible packages being used in ControlCatalog.Desktop
---------
Co-authored-by: Max Katz <maxkatz6@outlook.com>
* Ported the old Vulkan PR
* chop-chop
* Support for external objects in vulkan backend
* Fixed structure type
* Removed debug code
* sln fix
* Don't force vulkan on windows
* Fix native menu bar tooltip
* Make ToolTip tests more reliable
* Increase MacOS_Native_Menu_Has_ToolTip_If_Defined sleep delay
* Disable MacOS_Native_Menu_Has_ToolTip_If_Defined, as it fails way too often
This issue only shows up when using the cecil backend for XamlX and so can't easily be tested with unit tests. The easiest way to test it is to add it to a sample project, `BindingDemo` is as good as anywhere I think.
* Update .NET runtime TypeScript definitions
* Get splash screen by classname instead of ID
* Minimize css usage
* Move insets css properties to JS file
* Refactor browser surface handling, re-enable software renderer, allow fallback render modes
* Extract render timer from the surface, try to reuse compositor instance between avalonia views
* ControlCatalog: Make it possible to set some browser properties (like render mode) from URI arguments
* Rename AppBundle folder to wwwroot
* Extract ITextInputMethodImpl into a BrowserTopLevelImpl
* Extract input into BrowserInputHandler
* Make default surface size 1,1 to match other backends
* Reformat code that I touched (for the most part)
* Why this method even was in public API
* MVP SingleProject support for all supported platforms
* Convert MobileSandbox to be a single project
* WASM fixes
* Fix SDK CI version
* Use .NET 8 in build project as well
* Add EnableUnsafeBinaryFormatterSerialization
* Add macos workload, remove wasm-experimental
* And ios
* Specify TFM for single-project projects in dirs.proj
* Return deleted line
* Set PrivateAssets=all on MobileSandbox
* Add ios target only on non-linux in MobileSandbox
* Update after merges
* Update browser sub-project from the templates
* Don't build MobileSandbox on CI
* Couple of improvements
* Add android hack to run without manifest
* Add tvOS support and rearrange some properties
* Delete unusable Packages.targets file + related
* Add global Condition for AvaloniaSingleProject.targets
* 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>
* Minimize private API usages
- AvaloniaLocator.Current shouldn't be used unless really needed.
- Add comments where not possible otherwise
* fix wrong if statements
* Implement MacOS.IsTemplateIcon attached property on TrayIcon
* Use MacOS.IsTemplateIcon in the ControlCatalog
* Rename MacOS to MacOSProperties
* Extract IsTemplateIcon to ITrayIconWithIsTemplateImpl
* feat(NumericUpDown): Add InnerContent. It is positioned on the opposite side to ButtonSpinnerLocation
* fix: TextBox Nullability
* fix: Adress review
* fix: nits
* fix: missing update ControlCatalog