Browse Source

Fix #355: AvalonDock auto-hide pads close unexpectedly in high-DPI

pull/416/merge
Daniel Grunwald 11 years ago
parent
commit
ce0267f22a
  1. 2
      src/Libraries/AvalonDock/AvalonDock/FlyoutPaneWindow.cs
  2. 6
      src/Libraries/AvalonDock/AvalonDock/HelperFunc.cs

2
src/Libraries/AvalonDock/AvalonDock/FlyoutPaneWindow.cs

@ -509,7 +509,7 @@ namespace AvalonDock @@ -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));
}
}

6
src/Libraries/AvalonDock/AvalonDock/HelperFunc.cs

@ -174,6 +174,12 @@ namespace AvalonDock @@ -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;

Loading…
Cancel
Save