Support external document tab strips in Dock drag/drop workflows#1062
Merged
wieslawsoltes merged 9 commits intowieslawsoltes:masterfrom Feb 26, 2026
Merged
Conversation
This was referenced Mar 6, 2026
Closed
This was referenced Mar 16, 2026
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Summary
This PR adds Dock support for hosting a
DocumentTabStripoutside theDocumentControl/DockControlvisual tree while preserving document tab drag/drop behavior, finalized with an explicit contract-based API.What this fixes
Key changes
IExternalDockSurface(DockControlowner +SurfaceControl).DockControl:RegisterExternalDockSurface(...)UnregisterExternalDockSurface(...)DockProperties.ExternalDockControland related accessors/usage.DocumentTabStripto implementIExternalDockSurface.DocumentTabStripItemdrag start resolution:DockHelpers.ResolveDockControl(...)(ancestor first, then registered external owner).tests/Dock.Avalonia.HeadlessTests/ExternalDockSurfaceTests.cs.samples/DockExternalTabStripsSampleDockControls, each rooted by aDocumentDock, each with one registered externalDocumentTabStrip, using stock Fluent tab visuals.Commit breakdown
Support external tab strip drop target discoveryAllow external document tab strips to start dock dragsMatch tab drag preview size to dragged tabIntroduce external dock surface contract and registration APIAdd headless tests for external dock surface registrationAdd external tab strips sample with two dock controlsuse layout rounding for the tabstrip separators.fix testsNotes
DocumentTabStripbehavior remains unchanged.