* test: verify ShowCore applies default icon when no custom icon is set
Adds a test that verifies Window.Show() applies the default icon via
SetIcon when no custom icon has been set. Currently fails because
ShowCore has no default icon logic — the fallback only exists in the
constructor binding where it eagerly loads the icon.
Relates to #20478
* fix: defer default icon loading from constructor to ShowCore
The default icon was eagerly loaded during Window construction via
CreatePlatformImplBinding, even when a custom icon would be set or no
icon was needed. This caused unnecessary I/O (assembly resource loading)
on every first Window instantiation.
Move the default icon fallback from the binding lambda to ShowCore,
so LoadDefaultIcon only runs when the window is actually shown and
no custom icon has been set.
Fixes#20478
* Fix TextBox validation error persisting when reverting to same valid value
When a TwoWay binding with validation had an error and the user set the
target back to the same value that was last successfully written to the
source, WriteTargetValueToSource() would bail out early because the
target value matched LeafNode.Value. This prevented WriteValueToSource()
from being called, so the validation error was never cleared.
Add an ErrorType check to the condition in WriteTargetValueToSource() so
that the write-through still happens when there is a pending validation
error, matching the pattern already used in WriteValueToSource() at
line 310.
Fixes#20534https://claude.ai/code/session_01LTinLuE1bsNKaLPuDSNuuw
* Add test for validation error clearing when reverting to same valid value
Reproduces the scenario from #20534 where a TwoWay binding with a
setter that throws on invalid values fails to clear the validation error
when the target is set back to the same value that was last successfully
written to the source.
https://claude.ai/code/session_01LTinLuE1bsNKaLPuDSNuuw
* Remove redundant checks in WriteTargetValueToSource()
* Add failing test for #20688
Unit test created from issue description
* Add a failing test for wrong CacheLength handling
All items would be realized which is obviously wrong
* fix test setup used StackPanel instead of expcected
VirtualizingStackPanel
* Make sure the test actually fails
* update comment
* Fix for focusedElement and focusedIndex
* add another unit test
* Fixes for new test cases
* Addressing Review
* Update tests to match new behavior
* only recycle focused element if it is not null
* Address review
* Address copilot review
* add failing test
* fix StartU estimation
* remove unused sample file
* Add failing test for #20688
Unit test created from issue description
* Add a failing test for wrong CacheLength handling
All items would be realized which is obviously wrong
* fix test setup used StackPanel instead of expcected
VirtualizingStackPanel
* Make sure the test actually fails
* update comment
* Fix for focusedElement and focusedIndex
* add another unit test
* Fixes for new test cases
* Addressing Review
* Update tests to match new behavior
* only recycle focused element if it is not null
* Address review
* Address copilot review
* Native DockMenu code
* Add Native Interop
* Update ControlCatalog sample
* Add unit tests
* Add Action<IAvnMenu> to AvaloniaNativeMenuExporter
* Add dynamic dock item demo
* Move s_dockMenu reference to App
* Use Appium tests
* Revert INativeMenuExporterResetHandler
* Properly set the button for the checkbox
* Add dock test
* I hate Appium
* Rename NativeMenu.DockMenu to NativeDock.Menu
* Make static
* Remove Dock Click Test
* Add white space back for cleaner diff
* Reduce MenuExporter back to one
* Revert UpdateIfNeeded to private
* Revert QueueReset to private too... and fix some whitespace
* Revert IAvnMenuItem/IAvnMenu back
* That's what I get not comparing it to master
* And update this too
* Add documentation
* Add IMenuItem binding tests
* Use SetCurrentValue for all IMenuItem properties
Fix XMLDoc comments for MenuItem being inherited from an internal type
* Find ancestors/descendants with a predicate
* Use Predicate instead of Func
* Find ancestors/descendants with a predicate
* Use Predicate instead of Func
* Predicate<Visual> to Predicate<T>
---------
Co-authored-by: Jan Kučera <miloush@users.noreply.github.com>
* Fire CaptureChanging event when source changes
* Do not notfiy platform if only source changed
* Notify ancestors of element to be captured if none yet
* Pointer capture notify on source change tests
---------
Co-authored-by: Jan Kučera <miloush@users.noreply.github.com>
* #19962 Add AXAML Source Information to debug Builds
* SimplifyXamlSourceInfo
* Add XamlSourceInfo for as many elements as possible
* Add tests to confirm XamlSourceInfo is set for all types
* Remove property only added for debugging during development
* update skipped test so it runs (even though it doesn't yet pass)
* Wrap XamlAstNewClrObjectNode instead of XamlAstObjectNode, run transformer late
* Remove unsupported value types from the More_Resources_Get_XamlSourceInfo_Set
* Fix Document property not being set in runtime parser
* Add a dedicated CreateSourceInfo parameter for RuntimeXamlLoaderConfiguration, instead of reusing DesignMode
* Inherit real XamlValueWithManipulationNode, move actual manipulation to a separate class
* Fix group transformers by unwrapping manipulation nodes first
* minor Resource related test change
* Update public API as agreed
* Add new failing tests for the dictionaries
* Fix randomly failing tests, that depend on the test order
* Fix assert
* Rename AvaloniaXamlResourceTransformer
* Emit XamlSourceInfo from AvaloniaXamlResourceTransformer
* Rename AvaloniaXamlIlResourceTransformer for consistency
* Cleanup comments
* Remove XamlSourceInfoValueWithManipulationNode, use standard XamlValueWithManipulationNode
* Add new RuntimeXamlLoaderDocument.Document property
* Use UriBuilder trick to support unix paths on windows
* Add private AttachedProperty for avalonia objects, instead of always using weak table
* Fix wrong UriBuilder usage and add more test assets
* Fix "Invalid URI" exception
---------
Co-authored-by: KimHenrik <kimhenrik@outlook.de>
Co-authored-by: Max Katz <maxkatz6@outlook.com>
Make LeafNode property nullable and return null when the binding expression
has no nodes (e.g., when using a constant source with a converter but no path).
This fixes an ArgumentOutOfRangeException that occurred when accessing
LeafNode or Description properties on such bindings.
Fixes#20441
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
* Add support for parsing BoxShadows with colors expressions with parentheses
* Added BoxShadowsTests
* BoxShadow parsing should also respect parentheses
* Add StringSplitter
* Fix test
* Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* StringSplitter should not accept same bracket pairs
* Returns empty array only when input is null
* Add StringSplitterTests
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Add NumericUpDown NumberFormat failing test
* Force text update when NumberFormat has changed
---------
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
* Implement FillRuleProperty on Polyline
* Implement FillRule Property on Polygon
* Add tests
* Added comments to new public APIs
* Added more comments
* More tests
* More tests
* Updated API
* Added render tests
* More render tests
* Reintroducing the original PolylineGeometry constructor
* Updated API file
---------
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
* Reduce allocations for FontFamily.Parse
* Turn Trie data into static data
* Use static lambda in s_cachedLanguage.GetOrAdd
* Make LineBreakEnumerator+LineBreakState a ref struct to avoid allocations
* Use backing field for storing trie data in debug builds
.NET Standard compatibility
* Implement layout rounding for child sizes
Added layout rounding for child measurements in UniformGrid.
* Remove comment on child measurement in UniformGrid
Removed comment about measuring children in UniformGrid.
* Improved layout rounding logic for UniformGrid
* Grid_Ensures_Consistent_Cell_Width_When_UseLayoutRounding
* Fixed invalid renering of controls with non-zero bounds position.
Fixed text clipping of text elements inside LayoutTransformControl.
* Fixed rendering of VisualBrush.
* Fixed control clipping.
* Fixed opacity mask state.
* Reworked to skip rendering of elements out of clip.
* Code cleanup.
* Added unit test.
* Parameters order.
---------
Co-authored-by: PleshakovDV <pleshakovdv@ugpa.ru>
* Added unit tests for ReversibleStackPanel (#20171)
* Invalidates_Arrange_On_Reverse_Order_Change fails.
* Fixed ReversibleStackPanel not invalidating arrange on ReverseOrder change (#20171)
* Add failing test for preserving run formatting during selection
* Fix selection styling to preserve original text formatting in SelectableTextBlock
* fix: apply old logic when `_textRuns` is null
* Fixed the issue where a newline character required two backspaces to be deleted in Windows.
* add unit test
* Handling the differences between HeadlessTextShaperStub and TextShaperImpl
* Make unit tests available
* Treat "\r\n" as a single unit.
* The backspace test against CRLF
* Backspace should treat CRLF as a unit.
* Prevents repeated platform calls for matches that are already found and cached.
Ensures family-name normalization logic correctly maps platform-provided family names.
* Add missing test font
---------
Co-authored-by: Gillibald <stebner@avaloniaui.net>
* Fixed Selector.ValidateNestingSelector not calling overrides when iterating up through parent selectors
Changed ValidateNestingSelector to call recursively, walking up
the hierarchy of parent selectors. This means function overrides
are taken into account when walking up the tree. Now if a
selector has an OrSelector as its parent, it doesn't throw an
exception.
* Updated ToString methods to surround OrSelectors with parenthesis where useful
* Add unit test for notifications
* Fixed ArgumentException when showing multiple notifications with the same content, additional unit tests
* fixes after review
* IManagedNotificationManager.Show fix
* IsEditable combox box with text bindings
* Update after #18405 api review
* ComboBox tests for IsEditable
* remove unneeded error being throw when combox is editable and doesn't have text binding properties
* Changes after code review
* only do naviagtion check if combo box is editable
* Fix editable ComboBox tab navigation
* combobox code review improvements
---------
Co-authored-by: Julien Lebosquain <julien@lebosquain.net>
(cherry picked from commit 105ba1aa42)