Skip to content

Commit

Permalink
Merge pull request #326 from BAndysc/host_window_parent
Browse files Browse the repository at this point in the history
Correctly set host window's parent
  • Loading branch information
wieslawsoltes committed Mar 11, 2024
2 parents 8e0a5e9 3391c9e commit b77793f
Show file tree
Hide file tree
Showing 5 changed files with 14 additions and 24 deletions.
4 changes: 3 additions & 1 deletion src/Dock.Avalonia/Controls/HostWindow.axaml
Original file line number Diff line number Diff line change
@@ -1,6 1,7 @@
<ResourceDictionary xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:core="using:Dock.Model.Core">
xmlns:core="using:Dock.Model.Core"
xmlns:controls="clr-namespace:Dock.Model.Controls;assembly=Dock.Model">
<Design.PreviewWith>
<HostWindow IsToolWindow="False" Width="300" Height="400" />
</Design.PreviewWith>
Expand All @@ -14,6 15,7 @@
<Setter Property="WindowState" Value="Normal" />
<Setter Property="UseLayoutRounding" Value="True" />
<Setter Property="Title" Value="{Binding ActiveDockable.Title}" />
<Setter Property="Topmost" Value="{Binding Window.Topmost}" x:DataType="controls:IRootDock" />
<Setter Property="SystemDecorations" Value="Full" />
<Setter Property="ExtendClientAreaToDecorationsHint" Value="True" />
<Setter Property="ExtendClientAreaChromeHints" Value="PreferSystemChrome" />
Expand Down
18 changes: 11 additions & 7 deletions src/Dock.Avalonia/Controls/HostWindow.axaml.cs
Original file line number Diff line number Diff line change
@@ -1,11 1,13 @@
using System;
using System.Linq;
using System.Runtime.InteropServices;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Metadata;
using Avalonia.Controls.Primitives;
using Avalonia.Input;
using Avalonia.Styling;
using Avalonia.VisualTree;
using Dock.Avalonia.Internal;
using Dock.Model;
using Dock.Model.Core;
Expand Down Expand Up @@ -276,7 278,15 @@ public void Present(bool isDialog)
Window.Factory?.OnWindowOpened(Window);
}

Show();
var ownerDockControl = Window?.Layout?.Factory?.DockControls.FirstOrDefault();
if (ownerDockControl is Control control && control.GetVisualRoot() is Window parentWindow)
{
Show(parentWindow);
}
else
{
Show();
}
}
}
}
Expand Down Expand Up @@ -334,12 344,6 @@ public void GetSize(out double width, out double height)
height = Height;
}

/// <inheritdoc/>
public void SetTopmost(bool topmost)
{
Topmost = topmost;
}

/// <inheritdoc/>
public void SetTitle(string title)
{
Expand Down
1 change: 0 additions & 1 deletion src/Dock.Model/Adapters/HostAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 56,6 @@ public void Present(bool isDialog)
_window.Host.Present(isDialog);
_window.Host.SetPosition(_window.X, _window.Y);
_window.Host.SetSize(_window.Width, _window.Height);
_window.Host.SetTopmost(_window.Topmost);
_window.Host.SetTitle(_window.Title);
_window.Host.SetLayout(_window.Layout);
_window.Host.IsTracked = true;
Expand Down
6 changes: 0 additions & 6 deletions src/Dock.Model/Core/IHostWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,12 64,6 @@ public interface IHostWindow
/// <param name="height">The host height.</param>
void GetSize(out double width, out double height);

/// <summary>
/// Sets host topmost.
/// </summary>
/// <param name="topmost">The host topmost.</param>
void SetTopmost(bool topmost);

/// <summary>
/// Sets host title.
/// </summary>
Expand Down
9 changes: 0 additions & 9 deletions src/Dock.Model/FactoryBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -255,7 255,6 @@ public virtual void SplitToDock(IDock dock, IDockable dockable, DockOperation op
public virtual IDockWindow? CreateWindowFrom(IDockable dockable)
{
IDockable? target;
bool topmost;

switch (dockable)
{
Expand All @@ -273,7 272,6 @@ public virtual void SplitToDock(IDock dock, IDockable dockable, DockOperation op
dock.ActiveDockable = dockable;
}
}
topmost = true;
break;
}
case IDocument:
Expand Down Expand Up @@ -305,37 303,31 @@ public virtual void SplitToDock(IDock dock, IDockable dockable, DockOperation op
dock.ActiveDockable = dockable;
}
}
topmost = false;
break;
}
case IToolDock:
{
target = dockable;
topmost = true;
break;
}
case IDocumentDock:
{
target = dockable;
topmost = false;
break;
}
case IProportionalDock proportionalDock:
{
target = proportionalDock;
topmost = false;
break;
}
case IDockDock dockDock:
{
target = dockDock;
topmost = false;
break;
}
case IRootDock rootDock:
{
target = rootDock.ActiveDockable;
topmost = false;
break;
}
default:
Expand All @@ -361,7 353,6 @@ public virtual void SplitToDock(IDock dock, IDockable dockable, DockOperation op
window.Title = "";
window.Width = double.NaN;
window.Height = double.NaN;
window.Topmost = topmost;
window.Layout = root;

root.Window = window;
Expand Down

0 comments on commit b77793f

Please sign in to comment.