void RefreshVirtualList(object param)
{
bool layoutChanged = _virtualListChanged == 2;
_virtualListChanged = 0;
_eventLocked = true;
if (layoutChanged)
{
if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.SingleRow)
_curLineItemCount = 1;
else if (_lineItemCount != 0)
_curLineItemCount = _lineItemCount;
else if (_layout == ListLayoutType.FlowHorizontal)
{
_curLineItemCount = Mathf.FloorToInt((this.scrollPane.viewWidth + _columnGap) / (_itemSize.x + _columnGap));
if (_curLineItemCount <= 0)
_curLineItemCount = 1;
}
else if (_layout == ListLayoutType.FlowVertical)
{
_curLineItemCount = Mathf.FloorToInt((this.scrollPane.viewHeight + _lineGap) / (_itemSize.y + _lineGap));
if (_curLineItemCount <= 0)
_curLineItemCount = 1;
}
else //pagination
{
_curLineItemCount = Mathf.FloorToInt((this.scrollPane.viewWidth + _columnGap) / (_itemSize.x + _columnGap));
if (_curLineItemCount <= 0)
_curLineItemCount = 1;
}
if (_layout == ListLayoutType.Pagination)
{
_curLineItemCount2 = Mathf.FloorToInt((this.scrollPane.viewHeight + _lineGap) / (_itemSize.y + _lineGap));
if (_curLineItemCount2 <= 0)
_curLineItemCount2 = 1;
}
}
float ch = 0, cw = 0;
if (_realNumItems > 0)
{
int len = Mathf.CeilToInt((float)_realNumItems / _curLineItemCount) * _curLineItemCount;
if (_layout == ListLayoutType.SingleColumn || _layout == ListLayoutType.FlowHorizontal)
{
for (int i = 0; i < len; i += _curLineItemCount)
ch += _virtualItems[i].size.y + _lineGap;
if (ch > 0)
ch -= _lineGap;
for (int i = 0; i < _curLineItemCount; i++)
cw += _virtualItems[i].size.x + _columnGap;
if (cw > 0)
cw -= _columnGap;
}
else if (_layout == ListLayoutType.SingleRow || _layout == ListLayoutType.FlowVertical)
{
for (int i = 0; i < len; i += _curLineItemCount)
cw += _virtualItems[i].size.x + _columnGap;
if (cw > 0)
cw -= _columnGap;
ch = this.scrollPane.contentHeight;
for (int i = 0; i < _curLineItemCount; i++)
ch += _virtualItems[i].size.y + _lineGap;
if (ch > 0)
ch -= _lineGap;
}
else
{
int pageCount = Mathf.CeilToInt((float)len / (_curLineItemCount * _curLineItemCount2));
cw = pageCount * viewWidth;
ch = viewHeight;
}
}
HandleAlign(cw, ch);
this.scrollPane.SetContentSize(cw, ch);
_eventLocked = false;
HandleScroll(true);
}