mirror of https://github.com/icsharpcode/ILSpy.git
Branch:
ldmembertoken
christophwille/closedhierarchies
christophwille/membench
compound-assignment-operators
fix/1982-params-attribute-args
fix/2040-invalid-xml-characters
fix/2093-navigateto-reference-assembly
fix/2362-xalz-references
fix/2372-address-taken-by
fix/3282-indexer-optional-arguments
fix/3568-record-member-order
fix/4059-deconstruct-out-slots
fix/lambda-parameter-syntax
fix/scroll-children-on-expand
gh-pages
ldmembertoken
master
natural-type-lambdas-methods
null-coalescing-assignment
release/10.1
release/6.2
release/7.1
release/7.2
release/8.1
substring-optimizations
tests/829-async-method-builder-override
tests/829-collection-expressions
tests/829-compound-assignment-operators
tests/829-coverage-audit
tests/829-expression-tree-named-optional-args
tests/829-expression-variables-in-initializers
tests/829-extended-property-patterns
tests/829-extension-members
tests/829-extension-operators
tests/829-file-local-types
tests/829-improved-definite-assignment
tests/829-improved-overload-candidates
tests/829-inline-arrays
tests/829-interpolated-string-improvements
tests/829-lambda-param-modifiers
tests/829-list-patterns
tests/829-lock-object
tests/829-mixed-deconstruction
tests/829-null-coalescing-assignment
tests/829-null-conditional-assignment
tests/829-object-initializer-indexer
tests/829-overload-resolution-priority
tests/829-params-collections
tests/829-pattern-matching-improvements
tests/829-primary-constructors
tests/829-ref-unsafe-in-iterators-async
tests/829-sealed-record-tostring
tests/829-target-typed-conditional
tests/829-tuple-comparison
win-a11y-textsize
1.0-Beta
1.0-M1
1.0-M2
1.0-M3
1.0.0
2.0.0
2.1
2.2
2.3
2.3.1
3.0-Preview1
3.0-Preview2
3.0.2
v10.0
v10.0-preview1
v10.0-preview2
v10.0-preview3
v10.0.1
v10.1
v10.1.1
v11.0
v11.0-preview1
v11.0-rc
v2.3.2
v2.4
v3.0
v3.0-beta1
v3.0-beta2
v3.0-beta2a
v3.0-beta3
v3.0-beta4
v3.0.1
v3.1-beta1
v3.1-final
v3.1-rc
v3.2-beta
v3.2-rc
v3.2.0
v4.0
v4.0-alpha1
v4.0-beta1
v4.0-beta2
v4.0-beta3
v4.0-rc1
v4.0-rc2
v4.0.1
v5.0
v5.0-preview1
v5.0-preview2
v5.0-preview3
v5.0-preview4
v5.0-rc1
v5.0.1
v5.0.2
v6.0
v6.0-preview1
v6.0-preview2
v6.0-preview3
v6.0-preview4
v6.0-rc1
v6.1
v6.2
v6.2-preview1
v6.2-preview2
v6.2.1
v7.0
v7.0-preview1
v7.0-preview2
v7.0-preview3
v7.0-rc1
v7.0-rc2
v7.1
v7.2
v7.2-preview1
v7.2-preview2
v7.2-preview3
v7.2-preview4
v7.2-rc
v7.2.1
v8.0
v8.0-preview1
v8.0-preview2
v8.0-preview3
v8.0-preview4
v8.0-rc1
v8.1
v8.1.1
v8.2
v9.0
v9.0-preview1
v9.0-preview2
v9.0-preview3
v9.0-rc
v9.1
${ noResults }
4 Commits (ldmembertoken)
| Author | SHA1 | Message | Date |
|---|---|---|---|
|
|
065c9098fb |
Cover tree mutation under a scrolled, virtualized SharpTreeView
Issue #3290 reports a NullReferenceException inside SharpTreeNode.GetNodeByVisibleIndex, reached from a WPF virtualizing panel's measure pass. The frame is still live: the Avalonia SharpTreeView binds the TreeFlattener straight to ItemsSource, so Avalonia's virtualization indexes the same flat-list walk on every measure. Driving the model directly shows the indexer cannot walk off the end on one thread: TreeFlattener.Count and GetNodeByVisibleIndex read the same totalListLength fields with nothing in between, so a stale index becomes an ArgumentOutOfRangeException and never a null dereference. Randomized sweeps over insert/remove/expand/collapse/hide/reparent found no state where the two disagree. Only a mutation concurrent with the descent reproduces the reported frame, and every tree mutation in the app is marshalled to the UI thread. These tests pin the interleaving that the port changed: the flattened list shrinking underneath a realized index range, and a lazy subtree loading and reloading while scrolled. The first asserts the panel is actually virtualizing, so it cannot quietly degrade into a non-virtualized run that proves nothing. Assisted-by: Claude:claude-opus-5:Claude Code |
2 weeks ago |
|
|
51aafa0fd9 |
Move ILSpy UI code back to the ICSharpCode.ILSpy root namespace
The Avalonia port had placed the UI app in an ILSpy.* namespace tree, while the csproj RootNamespace and every prior release (through 10.1) use ICSharpCode.ILSpy.*. Restoring the historical namespace reduces the public API diff against release/10.1 for plugin authors and removes the shadowing that forced global:: qualifiers in the test project. The Images class and AccessOverlayIcon enum move back into the root namespace (as in 10.1), since an ICSharpCode.ILSpy.Images namespace would shadow the Images class for all code inside ICSharpCode.ILSpy. Assisted-by: Claude:claude-fable-5:Claude Code |
3 months ago |
|
|
3e8e08644b |
Add type-ahead search; prove native shift-range extend/shrink
OnTextInput drives incremental prefix search over the visible (flattened) nodes with a 1s idle reset -- a fresh keystroke advances past the current row, a growing prefix refines forward. A regression test confirms the payoff of the ListBox base: SelectionMode.Multiple extends AND shrinks a shift-range from the anchor (Shift+Down x2 then Shift+Up -> A,B), so the migrated control needs none of the ProDataGrid reflection workaround. |
3 months ago |
|
|
85cf2bb61f |
Scaffold a ListBox-based SharpTreeView control (Phase 1)
First increment of the from-scratch Avalonia tree control that will replace the ProDataGrid hierarchical usage. SharpTreeView : ListBox binds the cross-platform TreeFlattener (an IList + INotifyCollectionChanged of visible SharpTreeNodes) straight as ItemsSource, so the ListBox virtualizes it and provides anchor-based extend/shrink selection natively -- no HierarchicalNode wrapper, no model<->grid sync layer. Includes Root/ShowRoot/ShowLines props, Reload/flattener wiring, deselect-on-hide, selection->node.IsSelected, FocusNode/ScrollIntoNodeView/HandleExpanding, container overrides, and the tree keyboard gestures (Left/Right, numpad +/-/*, Enter/Space activate). SharpTreeViewItem : ListBoxItem (double-click expand), an IPlatformRoutedEventArgs adapter, an indent converter, and a ControlTheme (chevron expander + indent + icon + text) wired into App.axaml. The control is additive and not yet wired to any pane. Smoke tests prove the core: flatten, virtualize, expand/collapse row-count updates, and selection sync. |
3 months ago |