if (scroll == null)
return;
- if (!TryGetVerticalScrollbar(scroll, out var vScrollbar))
- return;
-
if (!TryGetNextScrollPosition(out float? nextScrollPosition))
return;
- vScrollbar.ValueTarget = nextScrollPosition.Value;
+ scroll.VScrollTarget = nextScrollPosition.Value;
- if (MathHelper.CloseToPercent(vScrollbar.Value, vScrollbar.ValueTarget))
+ if (MathHelper.CloseToPercent(scroll.VScroll, scroll.VScrollTarget))
_autoScrollActive = false;
}
- private bool TryGetVerticalScrollbar(ScrollContainer scroll, [NotNullWhen(true)] out VScrollBar? vScrollBar)
- {
- vScrollBar = null;
-
- foreach (var child in scroll.Children)
- {
- if (child is not VScrollBar)
- continue;
-
- var castChild = child as VScrollBar;
-
- if (castChild != null)
- {
- vScrollBar = castChild;
- return true;
- }
- }
-
- return false;
- }
-
private bool TryGetNextScrollPosition([NotNullWhen(true)] out float? nextScrollPosition)
{
nextScrollPosition = null;
if (scroll == null)
return;
- if (!TryGetVerticalScrollbar(scroll, out var vScrollbar))
- return;
-
if (!TryGetNextScrollPosition(out float? nextScrollPosition))
return;
- vScrollbar.ValueTarget = nextScrollPosition.Value;
+ scroll.VScrollTarget = nextScrollPosition.Value;
- if (MathHelper.CloseToPercent(vScrollbar.Value, vScrollbar.ValueTarget))
+ if (MathHelper.CloseToPercent(scroll.VScroll, scroll.VScrollTarget))
_autoScrollActive = false;
}
- private bool TryGetVerticalScrollbar(ScrollContainer scroll, [NotNullWhen(true)] out VScrollBar? vScrollBar)
- {
- vScrollBar = null;
-
- foreach (var control in scroll.Children)
- {
- if (control is not VScrollBar)
- continue;
-
- vScrollBar = (VScrollBar)control;
-
- return true;
- }
-
- return false;
- }
-
private bool TryGetNextScrollPosition([NotNullWhen(true)] out float? nextScrollPosition)
{
nextScrollPosition = null;
if (!_tryToScrollToListFocus)
return;
- if (!TryGetVerticalScrollbar(SensorScroller, out var vScrollbar))
- return;
-
if (TryGetNextScrollPosition(out float? nextScrollPosition))
{
- vScrollbar.ValueTarget = nextScrollPosition.Value;
+ SensorScroller.VScrollTarget = nextScrollPosition.Value;
- if (MathHelper.CloseToPercent(vScrollbar.Value, vScrollbar.ValueTarget))
+ if (MathHelper.CloseToPercent(SensorScroller.VScroll, SensorScroller.VScrollTarget))
{
_tryToScrollToListFocus = false;
return;
}
}
- private bool TryGetVerticalScrollbar(ScrollContainer scroll, [NotNullWhen(true)] out VScrollBar? vScrollBar)
- {
- vScrollBar = null;
-
- foreach (var child in scroll.Children)
- {
- if (child is not VScrollBar)
- continue;
-
- vScrollBar = (VScrollBar) child;
- return true;
- }
-
- return false;
- }
-
private bool TryGetNextScrollPosition([NotNullWhen(true)] out float? nextScrollPosition)
{
nextScrollPosition = 0;
return false;
}
- private bool TryGetVerticalScrollbar(ScrollContainer scroll, [NotNullWhen(true)] out VScrollBar? vScrollBar)
- {
- vScrollBar = null;
-
- foreach (var child in scroll.Children)
- {
- if (child is not VScrollBar)
- continue;
-
- var castChild = child as VScrollBar;
-
- if (castChild != null)
- {
- vScrollBar = castChild;
- return true;
- }
- }
-
- return false;
- }
-
private void AutoScrollToFocus()
{
if (!_autoScrollActive)
if (scroll == null)
return;
- if (!TryGetVerticalScrollbar(scroll, out var vScrollbar))
- return;
-
if (!TryGetNextScrollPosition(out float? nextScrollPosition))
return;
- vScrollbar.ValueTarget = nextScrollPosition.Value;
+ scroll.VScrollTarget = nextScrollPosition.Value;
- if (MathHelper.CloseToPercent(vScrollbar.Value, vScrollbar.ValueTarget))
+ if (MathHelper.CloseToPercent(scroll.VScroll, scroll.VScrollTarget))
_autoScrollActive = false;
}