From ce0267f22a807c50734c3f3afaf03c0bf608997d Mon Sep 17 00:00:00 2001 From: Daniel Grunwald Date: Sun, 12 Oct 2014 14:32:02 +0200 Subject: [PATCH] Fix #355: AvalonDock auto-hide pads close unexpectedly in high-DPI --- src/Libraries/AvalonDock/AvalonDock/FlyoutPaneWindow.cs | 2 +- src/Libraries/AvalonDock/AvalonDock/HelperFunc.cs | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Libraries/AvalonDock/AvalonDock/FlyoutPaneWindow.cs b/src/Libraries/AvalonDock/AvalonDock/FlyoutPaneWindow.cs index baae312771..784ad0ae3a 100644 --- a/src/Libraries/AvalonDock/AvalonDock/FlyoutPaneWindow.cs +++ b/src/Libraries/AvalonDock/AvalonDock/FlyoutPaneWindow.cs @@ -509,7 +509,7 @@ namespace AvalonDock Point ptMouse = PointToScreen(new Point()); //Debug.WriteLine(string.Format("{0}-{1}", pt.X, pt.Y)); - Rect rectWindow = new Rect(ptMouse.X, ptMouse.Y, Width, Height); + Rect rectWindow = new Rect(ptMouse, this.TransformToDeviceDPI(new Size(Width, Height))); return rectWindow.Contains(new Point(pt.X,pt.Y)); } } diff --git a/src/Libraries/AvalonDock/AvalonDock/HelperFunc.cs b/src/Libraries/AvalonDock/AvalonDock/HelperFunc.cs index a51436e50a..2339d09687 100644 --- a/src/Libraries/AvalonDock/AvalonDock/HelperFunc.cs +++ b/src/Libraries/AvalonDock/AvalonDock/HelperFunc.cs @@ -174,6 +174,12 @@ namespace AvalonDock return new Point(pt.X / m.M11, pt.Y /m.M22); } + public static Size TransformToDeviceDPI(this Visual visual, Size size) + { + Matrix m = PresentationSource.FromVisual(visual).CompositionTarget.TransformToDevice; + return new Size(size.Width * m.M11, size.Height * m.M22); + } + public static Size TransformFromDeviceDPI(this Visual visual, Size size) { Matrix m = PresentationSource.FromVisual(visual).CompositionTarget.TransformToDevice;