void UpdateScrollSize()
{
//System.Diagnostics.Debug.WriteLine("UpdateScrollSize()", "HexBox");
// calc scroll bar info
if (VScrollBarVisible && _byteProvider != null && _byteProvider.Length > 0 && _iHexMaxHBytes != 0)
{
long scrollmax = (long)Math.Ceiling((_byteProvider.Length + 1) / (double)_iHexMaxHBytes - _iHexMaxVBytes);
scrollmax = Math.Max(0, scrollmax);
long scrollpos = _startByte / _iHexMaxHBytes;
if (scrollmax < _scrollVmax)
{
/* Data size has been decreased. */
if (_scrollVpos == _scrollVmax)
/* Scroll one line up if we at bottom. */
PerformScrollLineUp();
}
if (scrollmax == _scrollVmax && scrollpos == _scrollVpos)
return;
_scrollVmin = 0;
_scrollVmax = scrollmax;
_scrollVpos = Math.Min(scrollpos, scrollmax);
UpdateVScroll();
}
else if (VScrollBarVisible)
{
// disable scroll bar
_scrollVmin = 0;
_scrollVmax = 0;
_scrollVpos = 0;
UpdateVScroll();
}
}