Browse Source

walk tree to find window.

Dan Walmsley 7 years ago
parent
commit
fd8e1ecba7
1 changed files with 4 additions and 2 deletions
  1. 4 2
      src/Avalonia.Controls/Primitives/PopupRoot.cs

+ 4 - 2
src/Avalonia.Controls/Primitives/PopupRoot.cs

@@ -7,6 +7,7 @@ using Avalonia.Controls.Platform;
 using Avalonia.Controls.Presenters;
 using Avalonia.Interactivity;
 using Avalonia.Layout;
+using Avalonia.LogicalTree;
 using Avalonia.Media;
 using Avalonia.Platform;
 using Avalonia.Styling;
@@ -82,8 +83,9 @@ namespace Avalonia.Controls.Primitives
         /// </summary>
         public void SnapInsideScreenEdges()
         {
-            var mainWindow = Window.OpenWindows.First();
-            var screen = mainWindow.Screens.ScreenFromPoint(Position);
+            var window = this.GetSelfAndLogicalAncestors().OfType<Window>().First();
+            
+            var screen = window.Screens.ScreenFromPoint(Position);
 
             var screenX = Position.X + Bounds.Width - screen.Bounds.X;
             var screenY = Position.Y + Bounds.Height - screen.Bounds.Y;