diff --git a/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs b/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs index 1114f076d2..11604992f1 100644 --- a/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs +++ b/src/Avalonia.Controls/Presenters/ScrollContentPresenter.cs @@ -90,7 +90,7 @@ namespace Avalonia.Controls.Presenters this.GetObservable(ChildProperty).Subscribe(UpdateScrollableSubscription); } - internal event EventHandler PreArrange; + internal event EventHandler PreArrange; /// /// Gets or sets a value indicating whether the content can be scrolled horizontally. @@ -241,7 +241,10 @@ namespace Avalonia.Controls.Presenters /// protected override Size ArrangeOverride(Size finalSize) { - PreArrange?.Invoke(this, EventArgs.Empty); + PreArrange?.Invoke(this, new VectorEventArgs + { + Vector = new Vector(finalSize.Width, finalSize.Height), + }); if (_logicalScrollSubscription != null || Child == null) { diff --git a/src/Avalonia.Controls/Repeater/ViewportManager.cs b/src/Avalonia.Controls/Repeater/ViewportManager.cs index 57ac1cf2a5..bce7b4df5f 100644 --- a/src/Avalonia.Controls/Repeater/ViewportManager.cs +++ b/src/Avalonia.Controls/Repeater/ViewportManager.cs @@ -9,6 +9,7 @@ using System.Reactive.Disposables; using System.Reactive.Linq; using System.Threading.Tasks; using Avalonia.Controls.Presenters; +using Avalonia.Input; using Avalonia.Layout; using Avalonia.Logging; using Avalonia.Media; @@ -537,10 +538,10 @@ namespace Avalonia.Controls return Disposable.Empty; } - private void ScrollContentPresenterPreArrange(object sender, EventArgs e) + private void ScrollContentPresenterPreArrange(object sender, VectorEventArgs e) { var scp = (ScrollContentPresenter)sender; - var effectiveViewport = new Rect((Point)scp.Offset, scp.Viewport); + var effectiveViewport = new Rect((Point)scp.Offset, new Size(e.Vector.X, e.Vector.Y)); if (effectiveViewport != _visibleWindow) {