Browse Source

Fix scrolling algorithm

pull/554/head
Steven Kirk 11 years ago
parent
commit
362745a55e
  1. 14
      src/Avalonia.Controls/Presenters/ThingamybobPresenter.cs

14
src/Avalonia.Controls/Presenters/ThingamybobPresenter.cs

@ -31,20 +31,26 @@ namespace Avalonia.Controls.Presenters
{
get
{
return new Vector(0, _firstIndex * AverageItemSize);
return new Vector(0, (_firstIndex * AverageItemSize) + (_panel?.PixelOffset ?? 0));
}
set
{
var count = _lastIndex - _firstIndex;
_firstIndex = (int)(value.Y / AverageItemSize);
var firstIndex = (int)(value.Y / AverageItemSize);
var firstIndexChanged = _firstIndex != firstIndex;
_firstIndex = firstIndex;
_lastIndex = _firstIndex + count;
_panel.PixelOffset = value.Y % AverageItemSize;
Renumber();
if (firstIndexChanged)
{
Renumber();
}
}
}
Size IScrollable.Viewport => new Size(1, (_lastIndex - _firstIndex) * AverageItemSize);
Size IScrollable.Viewport => new Size(1, _panel?.Bounds.Height ?? 0);
Size IScrollable.ScrollSize => new Size(0, 1);
Size IScrollable.PageScrollSize => new Size(0, 1);

Loading…
Cancel
Save