Enable Avalonia DevTools in debug builds (F12)
Details
Calls mainWindow.AttachDevTools() in #if DEBUG so the built-in
element inspector, visual tree viewer, and layout visualizer are
available via F12 during development.
SplitPaneLayout: force clip geometry on panes in ArrangeOverride
Details
When a child's DesiredSize exceeds the arranged rect, ArrangeCore
may let the child render at its desired width, overflowing into the
adjacent pane. ClipToBounds on the parent Control doesn't reliably
clip in this scenario. Now explicitly sets Clip = RectangleGeometry
on each pane after arrange, guaranteeing content stays within its
allocated region.
Rewrite SplitPaneLayout as direct Control with own layout
Details
The Border→SplitPanel→Border-host chain wasn't properly constraining
child content width. Rewrote as a Control subclass that directly
manages Pane1, Pane2, and the resize handle as visual/logical
children, with MeasureOverride and ArrangeOverride that measure each
child with its exact proportional width constraint and arrange at
exact rects. No intermediate containers to lose constraints.
Fix SplitPaneLayout: use Border hosts instead of ContentPresenter
Details
ContentPresenter outside a ControlTemplate doesn't reliably present
Control content in Avalonia. Replaced with Border hosts that use
Child property directly.
Also fixed MeasureOverride: was returning availableSize which could
contain Infinity, causing the layout system to give zero size. Now
clamps infinite dimensions and measures each child with its
proportional share of space.
Add SplitPaneLayout shared control to UI.Adaptive
Details
Code-only Border subclass with a custom inner Panel that arranges
two content panes and a draggable resize handle using ratio-based
math. Avoids the star-column minimum width issues that plague
Grid-based split implementations.
Properties: Ratio (pane2 fraction), MinRatio, MaxRatio, HandleSize,
Pane1, Pane2. Fires RatioChanged event on drag release for
persistence. During drag, uses an internal _dragRatio for live
feedback without updating the bound property on every pixel.
Replaces the inline resize logic pattern found in Tasks and Data
plugins with a single reusable component.
Get notified about new releases