private void ProgressThumb(bool enableTimer)
{
int scrollOldValue = curValue;
var type = ScrollEventType.First;
int thumbSize, thumbPos;
if (Orientation == MetroScrollOrientation.Vertical)
{
thumbPos = thumbRectangle.Y;
thumbSize = thumbRectangle.Height;
}
else
{
thumbPos = thumbRectangle.X;
thumbSize = thumbRectangle.Width;
}
if ((bottomBarClicked && (thumbPos + thumbSize) < trackPosition))
{
type = ScrollEventType.LargeIncrement;
curValue = GetValue(false, false);
if (curValue == maximum)
{
ChangeThumbPosition(thumbBottomLimitTop);
type = ScrollEventType.Last;
}
else
{
ChangeThumbPosition(Math.Min(thumbBottomLimitTop, GetThumbPosition()));
}
}
else if ((topBarClicked && thumbPos > trackPosition))
{
type = ScrollEventType.LargeDecrement;
curValue = GetValue(false, true);
if (curValue == minimum)
{
ChangeThumbPosition(thumbTopLimit);
type = ScrollEventType.First;
}
else
{
ChangeThumbPosition(Math.Max(thumbTopLimit, GetThumbPosition()));
}
}
if (scrollOldValue != curValue)
{
OnScroll(type, scrollOldValue, curValue, scrollOrientation);
Invalidate();
if (enableTimer)
{
EnableTimer();
}
}
}