Merged
Conversation
This was referenced Feb 4, 2026
This was referenced Feb 11, 2026
Closed
This was referenced Feb 18, 2026
This was referenced Feb 25, 2026
This was referenced Feb 25, 2026
This was referenced Mar 4, 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.
Windowing System PR Summary
Summary
This change set introduces a full windowing control surface for dock and floating windows while preserving all existing defaults. It adds explicit owner resolution modes, taskbar visibility control, host mode selection (managed vs native), and safe modal fallbacks. The changes span model interfaces, factories, settings, Avalonia hosting behavior, tests, docs, and a new ReactiveUI sample that exercises all cases.
Detailed Spec
Goals
DockWindowOwnerMode.DockableWindow.ShowInTaskbar.AlwaysOwned,NeverOwned,Default).Native,Managed,Default) atDockSettingsandIRootDock.Defaults (unchanged)
DockSettings.UseOwnerForFloatingWindows = true.DockSettings.UseManagedWindows = false.DockSettings.FloatingWindowOwnerPolicy = Default(defers toUseOwnerForFloatingWindows).DockSettings.FloatingWindowHostMode = Default(defers toUseManagedWindows).IRootDock.FloatingWindowHostMode = Default.IDockWindow.ShowInTaskbar = null(do not override platform default).IDockWindow.IsModal = false.Owner resolution order (HostWindow)
OwnerMode.None=> no owner.OwnerMode.ParentWindow=> useParentWindow.OwnerMode.DockableWindow=> useParentWindowif set (factory prepares this).OwnerMode.RootWindow=> use root window fromOwneror factory chain.OwnerMode.Default=> useParentWindowif set, otherwise follow global owner policy:AlwaysOwned=> use the visual root from the firstDockControl.NeverOwned=> no owner.Default=> defer toUseOwnerForFloatingWindows.DockableWindow owner preparation (Factory)
OwnerMode.DockableWindowis selected, the factory resolves the current host window of the source dockable before it is removed and assigns it toDockWindowOptions.ParentWindow.Host mode selection
IRootDock.FloatingWindowHostMode(if notDefault).DockSettings.FloatingWindowHostMode(if notDefault).DockSettings.UseManagedWindows(legacy default).Managed=> createManagedHostWindow.Native=> createHostWindow.Taskbar visibility
IDockWindow.ShowInTaskbaris non-null, AvaloniaHostWindowapplies it toWindow.ShowInTaskbar.Modal safety fallback
IsModal = trueand no owner can be resolved:OwnerMode.Noneor global policyNeverOwned), show non-modally and emit diagnostic log.Changes Description
Core Model and Factory
DockWindowOwnerMode.DockableWindow.DockFloatingWindowHostModeenum.DockWindowOptions(owner mode, parent window, modal, taskbar).ShowInTaskbartoIDockWindowand all model implementations.FloatingWindowHostModetoIRootDockand all model implementations.ParentWindowwhenOwnerMode.DockableWindowis used.NavigateAdapter.ShowWindowsnow respectsIsModalwhen presenting windows.Settings
DockFloatingWindowOwnerPolicy.DockSettings.ResolveFloatingWindowHostMode(IRootDock? root)IsManagedWindowHostingEnabled(IRootDock? root)ShouldUseOwnerForFloatingWindows()DockSettingsOptionsandAppBuilderExtensionswith host mode and owner policy configuration.Avalonia Hosting
HostWindow.DockHelpersand used across docking internals.Serialization
AvaloniaDockSerializerincludes newFloatingWindowHostModeandShowInTaskbarfields.Sample
DockReactiveUIWindowRelationsSampleshowcases:Documentation
windowing/overview.mdwindowing/ownership.mdwindowing/hosting.mdwindowing/taskbar-and-modal.mddock-windows.md,dock-window-owner.md,dock-settings.md.Tests
Usage Samples
Per-window owner mode and modal presentation
DockableWindow owner mode (use current hosting window)
Taskbar visibility override
Global host mode selection
Per-root host mode override
Global owner policy