Browse Source
Caused by CreateMatrices not clearing the existing matrices. This means previous measures alter the results of a measure.pull/396/head
3 changed files with 74 additions and 0 deletions
@ -0,0 +1,68 @@ |
|||||
|
// Copyright (c) The Perspex Project. All rights reserved.
|
||||
|
// Licensed under the MIT license. See licence.md file in the project root for full license information.
|
||||
|
|
||||
|
using Perspex.Controls; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace Perspex.Controls.UnitTests |
||||
|
{ |
||||
|
public class GridTests |
||||
|
{ |
||||
|
[Fact] |
||||
|
public void Calculates_Colspan_Correctly() |
||||
|
{ |
||||
|
var target = new Grid |
||||
|
{ |
||||
|
ColumnDefinitions = new ColumnDefinitions |
||||
|
{ |
||||
|
new ColumnDefinition(GridLength.Auto), |
||||
|
new ColumnDefinition(new GridLength(4, GridUnitType.Pixel)), |
||||
|
new ColumnDefinition(GridLength.Auto), |
||||
|
}, |
||||
|
RowDefinitions = new RowDefinitions |
||||
|
{ |
||||
|
new RowDefinition(GridLength.Auto), |
||||
|
new RowDefinition(GridLength.Auto), |
||||
|
}, |
||||
|
Children = new Controls |
||||
|
{ |
||||
|
new Border |
||||
|
{ |
||||
|
Width = 100, |
||||
|
Height = 25, |
||||
|
[Grid.ColumnSpanProperty] = 3, |
||||
|
}, |
||||
|
new Border |
||||
|
{ |
||||
|
Width = 150, |
||||
|
Height = 25, |
||||
|
[Grid.RowProperty] = 1, |
||||
|
}, |
||||
|
new Border |
||||
|
{ |
||||
|
Width = 50, |
||||
|
Height = 25, |
||||
|
[Grid.RowProperty] = 1, |
||||
|
[Grid.ColumnProperty] = 2, |
||||
|
} |
||||
|
}, |
||||
|
}; |
||||
|
|
||||
|
target.Measure(Size.Infinity); |
||||
|
|
||||
|
// Issue #25 only appears after a second measure
|
||||
|
target.InvalidateMeasure(); |
||||
|
target.Measure(Size.Infinity); |
||||
|
|
||||
|
target.Arrange(new Rect(target.DesiredSize)); |
||||
|
|
||||
|
Assert.Equal(new Size(204, 50), target.Bounds.Size); |
||||
|
Assert.Equal(150d, target.ColumnDefinitions[0].ActualWidth); |
||||
|
Assert.Equal(4d, target.ColumnDefinitions[1].ActualWidth); |
||||
|
Assert.Equal(50d, target.ColumnDefinitions[2].ActualWidth); |
||||
|
Assert.Equal(new Rect(52, 0, 100, 25), target.Children[0].Bounds); |
||||
|
Assert.Equal(new Rect(0, 25, 150, 25), target.Children[1].Bounds); |
||||
|
Assert.Equal(new Rect(154, 25, 50, 25), target.Children[2].Bounds); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue