internal void FixBar()
{
if (GuiManagerDrawn)
{
if (mAlignment == ScrollBarAlignment.Vertical)
{
float area = ScaleY - 2;
if (mPositionBar.ScaleY + mPositionBar.WorldUnitRelativeY > ScaleY - 2)
mPositionBar.WorldUnitRelativeY = ScaleY - 2 - mPositionBar.ScaleY;
if (-mPositionBar.ScaleY + mPositionBar.WorldUnitRelativeY < -ScaleY + 2)
mPositionBar.WorldUnitRelativeY = -ScaleY + 2 + mPositionBar.ScaleY;
double topOfPosBarFromTopOfScrollBar =
mPositionBar.Parent.ScaleY - 2 - (mPositionBar.WorldUnitRelativeY + mPositionBar.ScaleY);
double totalAvailableArea = 2 * (mScaleY - 2) - 2 * mPositionBar.ScaleY;
double invisibleCount = mTotalCount *
(1 - view);
if (totalAvailableArea == 0)
{
mFirstVisibleIndex = 0;
}
else
{
mFirstVisibleIndex = (int)System.Math.Round(
invisibleCount * topOfPosBarFromTopOfScrollBar / totalAvailableArea);
}
mPositionBar.WorldUnitRelativeX = 0;
}
else
{
if (mPositionBar.ScaleX + mPositionBar.WorldUnitRelativeX > ScaleX - 2)
mPositionBar.WorldUnitRelativeX = ScaleX - 2 - mPositionBar.ScaleX;
if (-mPositionBar.ScaleX + mPositionBar.WorldUnitRelativeX < -ScaleX + 2)
mPositionBar.WorldUnitRelativeX = -ScaleX + 2 + mPositionBar.ScaleX;
mPositionBar.WorldUnitRelativeY = 0;
double topOfPosBarFromTopOfScrollBar =
mPositionBar.Parent.ScaleX - 2 - (mPositionBar.WorldUnitRelativeX + mPositionBar.ScaleX);
mFirstVisibleIndex = (int)System.Math.Round(topOfPosBarFromTopOfScrollBar /
(2 * (mScaleX - 2) * mSensitivity));
}
}
else
{
if (mAlignment == ScrollBarAlignment.Vertical)
{
if (mPositionBar.ScaleY + mPositionBar.WorldUnitRelativeY > ScaleY - 2)
mPositionBar.WorldUnitRelativeY = ScaleY - 2 - mPositionBar.ScaleY;
if (-mPositionBar.ScaleY + mPositionBar.WorldUnitRelativeY < -ScaleY + 2)
mPositionBar.WorldUnitRelativeY = -ScaleY + 2 + mPositionBar.ScaleY;
mPositionBar.WorldUnitRelativeX = 0;
double topOfPosBarFromTopOfScrollBar =
mPositionBar.Parent.ScaleY - 2 - (mPositionBar.WorldUnitRelativeY + mPositionBar.ScaleY);
double totalAvailableArea = 2 * (mScaleY - 2) - 2 * mPositionBar.ScaleY;
double invisibleCount = mTotalCount *
(1 - view);
mFirstVisibleIndex = (int)System.Math.Round(
invisibleCount * topOfPosBarFromTopOfScrollBar / totalAvailableArea);
}
else
{
if (mPositionBar.WorldUnitRelativeX > 2 * mScaleX - 3)
mPositionBar.WorldUnitRelativeX = 2 * mScaleX - 3;
if (mPositionBar.WorldUnitRelativeX < 3)
mPositionBar.WorldUnitRelativeX = 3;
mPositionBar.WorldUnitRelativeY = 1;
double topOfPosBarFromTopOfScrollBar =
mPositionBar.Parent.ScaleX - 2 - (mPositionBar.WorldUnitRelativeX + mPositionBar.ScaleX);
mFirstVisibleIndex = (int)System.Math.Round(topOfPosBarFromTopOfScrollBar /
(2 * (mScaleX - 2) * mSensitivity));
}
}
}