-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
design-discussionOngoing discussion about design without consensusOngoing discussion about design without consensushelp wantedGood issue for external contributorsGood issue for external contributors
Milestone
Description
Problem:
Looking at the implementation of `ScrollableControl.Scale{Core}:
internal void ScaleDockPadding(float dx, float dy)
{
dockPadding?.Scale(dx, dy);
}
[EditorBrowsable(EditorBrowsableState.Never)]
protected override void ScaleCore(float dx, float dy)
{
ScaleDockPadding(dx, dy);
base.ScaleCore(dx, dy);
}Where DockPadding.Scale is implemented as
internal void Scale(float dx, float dy) => _owner.Padding.Scale(dx, dy);I would expect the scrollable control's padding to scale by dx and dy. However, the following tests demonstrate that no scaling is happening.
I think something may be weird in that calling Padding.Scale does not seem to affect the underlying Padding instance stored in Control
[WinFormsFact]
public void ScrollableControl_Scale_InvokeWithoutPaddingWithDockPadding_Success()
{
using var control = new ScrollableControl();
Assert.Equal(0, control.DockPadding.Left);
Assert.Equal(0, control.DockPadding.Top);
Assert.Equal(0, control.DockPadding.Right);
Assert.Equal(0, control.DockPadding.Bottom);
control.Scale(10, 20);
Assert.Equal(0, control.DockPadding.Left);
Assert.Equal(0, control.DockPadding.Top);
Assert.Equal(0, control.DockPadding.Right);
Assert.Equal(0, control.DockPadding.Bottom);
Assert.Equal(Padding.Empty, control.Padding);
}
[WinFormsFact]
public void ScrollableControl_Scale_InvokeWithoutPaddingWithoutDockPadding_Success()
{
using var control = new ScrollableControl();
control.Scale(10, 20);
Assert.Equal(0, control.DockPadding.Left);
Assert.Equal(0, control.DockPadding.Top);
Assert.Equal(0, control.DockPadding.Right);
Assert.Equal(0, control.DockPadding.Bottom);
Assert.Equal(Padding.Empty, control.Padding);
}
[WinFormsFact]
public void ScrollableControl_Scale_InvokeWithPaddingWithDockPadding_Success()
{
using var control = new ScrollableControl
{
Padding = new Padding(1, 2, 3, 4)
};
control.Scale(10, 20);
Assert.Equal(1, control.DockPadding.Left);
Assert.Equal(2, control.DockPadding.Top);
Assert.Equal(3, control.DockPadding.Right);
Assert.Equal(4, control.DockPadding.Bottom);
Assert.Equal(new Padding(1, 2, 3, 4), control.Padding);
}
[WinFormsFact]
public void ScrollableControl_Scale_InvokeWithPaddingWithoutDockPadding_Success()
{
using var control = new ScrollableControl
{
Padding = new Padding(1, 2, 3, 4)
};
Assert.Equal(1, control.DockPadding.Left);
Assert.Equal(2, control.DockPadding.Top);
Assert.Equal(3, control.DockPadding.Right);
Assert.Equal(4, control.DockPadding.Bottom);
control.Scale(10, 20);
Assert.Equal(1, control.DockPadding.Left);
Assert.Equal(2, control.DockPadding.Top);
Assert.Equal(3, control.DockPadding.Right);
Assert.Equal(4, control.DockPadding.Bottom);
Assert.Equal(new Padding(1, 2, 3, 4), control.Padding);
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
design-discussionOngoing discussion about design without consensusOngoing discussion about design without consensushelp wantedGood issue for external contributorsGood issue for external contributors