From 2e305451f04fbccf60eda5f308ab51eccac35880 Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Wed, 16 Jan 2019 23:16:50 +0300 Subject: [PATCH] Properly set size hints --- src/Avalonia.X11/X11Window.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Avalonia.X11/X11Window.cs b/src/Avalonia.X11/X11Window.cs index 5951a3c4fd..e6871ce266 100644 --- a/src/Avalonia.X11/X11Window.cs +++ b/src/Avalonia.X11/X11Window.cs @@ -200,8 +200,8 @@ namespace Avalonia.X11 // People might be passing double.MaxValue if (max.Width < 100000 && max.Height < 100000) { - hints.max_width = (int)Math.Max(100000, max.Width); - hints.max_height = (int)Math.Max(100000, max.Height); + hints.max_width = max.Width; + hints.max_height = max.Height; flags |= XSizeHintsFlags.PMaxSize; } @@ -417,6 +417,7 @@ namespace Avalonia.X11 var oldScaledSize = ClientSize; Scaling = newScaling; ScalingChanged?.Invoke(Scaling); + SetMinMaxSize(_scaledMinMaxSize.minSize, _scaledMinMaxSize.maxSize); Resize(oldScaledSize, true); return true; } @@ -829,7 +830,16 @@ namespace Avalonia.X11 public void SetMinMaxSize(Size minSize, Size maxSize) { _scaledMinMaxSize = (minSize, maxSize); - _minMaxSize = (ToPixelSize(minSize), ToPixelSize(maxSize)); + var min = new PixelSize( + (int)(minSize.Width < 1 ? 1 : minSize.Width * Scaling), + (int)(minSize.Height < 1 ? 1 : minSize.Height * Scaling)); + + const int maxDim = 100000; + var max = new PixelSize( + (int)(maxSize.Width > maxDim ? maxDim : Math.Max(min.Width, minSize.Width * Scaling)), + (int)(maxSize.Height > maxDim ? maxDim : Math.Max(min.Height, minSize.Height * Scaling))); + + _minMaxSize = (min, max); } public void SetTopmost(bool value)