Skip to content

Commit

Permalink
Use the owner window's screen as the constraint. (#15910)
Browse files Browse the repository at this point in the history
#14982 added some logic from WPF to contrain a window showed with `WindowStartupLocation.CenterOwner` to the screen, but it had a bug: the screen used was the screen that the window being _shown) is currently on, not the _owner_ window.

This means that if the owner window is on a different screen to the window being shown then it will be constrained to the wrong screen.

You can see this on Windows by showing a child `Window` with `CenterOwner` when the owner window is on a secondary screen: the child window will initially be shown on the primary screen and so the constraint will be wrong, resulting in the child window being shown on the wrong screen.
  • Loading branch information
grokys committed Aug 8, 2024
1 parent e15f0fc commit a7c8046
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion src/Avalonia.Controls/Window.cs
Original file line number Diff line number Diff line change
Expand Up @@ -976,7 +976,7 @@ private void SetWindowStartupLocation(Window? owner = null)
PixelSize.FromSize(ownerSize, scaling));
var childRect = ownerRect.CenterRect(rect);

if (Screens.ScreenFromWindow(this)?.WorkingArea is { } constraint)
if (Screens.ScreenFromWindow(owner)?.WorkingArea is { } constraint)
{
var maxX = constraint.Right - rect.Width;
var maxY = constraint.Bottom - rect.Height;
Expand Down

0 comments on commit a7c8046

Please sign in to comment.