diff --git a/src/Avalonia.Controls/DefinitionBase.cs b/src/Avalonia.Controls/DefinitionBase.cs index 38fc375631..3301d23f61 100644 --- a/src/Avalonia.Controls/DefinitionBase.cs +++ b/src/Avalonia.Controls/DefinitionBase.cs @@ -43,13 +43,11 @@ namespace Avalonia.Controls /// Internal helper to access up-to-date UserMaxSize property value. /// internal abstract double UserMaxSize { get; } - - private double _minSize; // used during measure to accumulate size for "Auto" and "Star" DefinitionBase's /// /// Layout-time user size type. /// - internal Grid.LayoutTimeSizeType SizeType {get; set;} + internal Grid.LayoutTimeSizeType SizeType { get; set; } /// /// Returns or sets measure size for the definition. /// @@ -81,17 +79,9 @@ namespace Avalonia.Controls internal double SizeCache { get; set; } /// - /// Returns min size. + /// Used during measure to accumulate size for "Auto" and "Star" DefinitionBase's /// - internal double MinSize - { - get - { - double minSize = _minSize; - return (minSize); - } - - } + internal double MinSize { get; set; } /// /// Updates min size. @@ -99,28 +89,7 @@ namespace Avalonia.Controls /// New size. internal void UpdateMinSize(double minSize) { - _minSize = Math.Max(_minSize, minSize); - } - - /// - /// Sets min size. - /// - /// New size. - internal void SetMinSize(double minSize) - { - _minSize = minSize; - } - - /// - /// Returns min size, always taking into account shared state. - /// - internal double MinSizeForArrange - { - get - { - double minSize = _minSize; - return (minSize); - } + MinSize = Math.Max(MinSize, minSize); } /// diff --git a/src/Avalonia.Controls/GridWPF.cs b/src/Avalonia.Controls/GridWPF.cs index d86ec4c1c0..970b4de865 100644 --- a/src/Avalonia.Controls/GridWPF.cs +++ b/src/Avalonia.Controls/GridWPF.cs @@ -708,7 +708,7 @@ namespace Avalonia.Controls for (int i = 0; i < definitions.Length; ++i) { // Reset minimum size. - definitions[i].SetMinSize(0); + definitions[i].MinSize = 0; double userMinSize = definitions[i].UserMinSize; double userMaxSize = definitions[i].UserMaxSize; @@ -719,7 +719,7 @@ namespace Avalonia.Controls case (GridUnitType.Pixel): definitions[i].SizeType = LayoutTimeSizeType.Pixel; userSize = definitions[i].UserSize.Value; - + // this was brought with NewLayout and defeats squishy behavior userMinSize = Math.Max(userMinSize, Math.Min(userSize, userMaxSize)); break; @@ -784,11 +784,11 @@ namespace Avalonia.Controls { if (isRows) { - DefinitionsV[i].SetMinSize(minSizes[i]); + DefinitionsV[i].MinSize = minSizes[i]; } else { - DefinitionsU[i].SetMinSize(minSizes[i]); + DefinitionsU[i].MinSize = minSizes[i]; } } } @@ -1642,14 +1642,14 @@ namespace Avalonia.Controls double starWeight = StarWeight(def, scale); totalStarWeight += starWeight; - if (def.MinSizeForArrange > 0.0) + if (def.MinSize > 0.0) { // store ratio w/min in MeasureSize (for now) definitionIndices[minCount++] = i; - def.MeasureSize = starWeight / def.MinSizeForArrange; + def.MeasureSize = starWeight / def.MinSize; } - double effectiveMaxSize = Math.Max(def.MinSizeForArrange, def.UserMaxSize); + double effectiveMaxSize = Math.Max(def.MinSize, def.UserMaxSize); if (!double.IsPositiveInfinity(effectiveMaxSize)) { // store ratio w/max in SizeCache (for now) @@ -1669,7 +1669,7 @@ namespace Avalonia.Controls break; case (GridUnitType.Auto): - userSize = def.MinSizeForArrange; + userSize = def.MinSize; break; } @@ -1688,7 +1688,7 @@ namespace Avalonia.Controls userMaxSize = def.UserMaxSize; } - def.SizeCache = Math.Max(def.MinSizeForArrange, Math.Min(userSize, userMaxSize)); + def.SizeCache = Math.Max(def.MinSize, Math.Min(userSize, userMaxSize)); takenSize += def.SizeCache; } } @@ -1752,14 +1752,14 @@ namespace Avalonia.Controls { resolvedIndex = definitionIndices[minCount - 1]; resolvedDef = definitions[resolvedIndex]; - resolvedSize = resolvedDef.MinSizeForArrange; + resolvedSize = resolvedDef.MinSize; --minCount; } else { resolvedIndex = definitionIndices[defCount + maxCount - 1]; resolvedDef = definitions[resolvedIndex]; - resolvedSize = Math.Max(resolvedDef.MinSizeForArrange, resolvedDef.UserMaxSize); + resolvedSize = Math.Max(resolvedDef.MinSize, resolvedDef.UserMaxSize); --maxCount; } @@ -1882,7 +1882,7 @@ namespace Avalonia.Controls // min and max should have no effect by now, but just in case... resolvedSize = Math.Min(resolvedSize, def.UserMaxSize); - resolvedSize = Math.Max(def.MinSizeForArrange, resolvedSize); + resolvedSize = Math.Max(def.MinSize, resolvedSize); // Use the raw (unrounded) sizes to update takenSize, so that // proportions are computed in the same terms as in phase 3; @@ -1974,7 +1974,7 @@ namespace Avalonia.Controls { DefinitionBase definition = definitions[definitionIndices[i]]; double final = definition.SizeCache - dpiIncrement; - final = Math.Max(final, definition.MinSizeForArrange); + final = Math.Max(final, definition.MinSize); if (final < definition.SizeCache) { adjustedSize -= dpiIncrement; @@ -1990,7 +1990,7 @@ namespace Avalonia.Controls { DefinitionBase definition = definitions[definitionIndices[i]]; double final = definition.SizeCache + dpiIncrement; - final = Math.Max(final, definition.MinSizeForArrange); + final = Math.Max(final, definition.MinSize); if (final > definition.SizeCache) { adjustedSize += dpiIncrement;