private bool UpdateItemArea()
{
// Calculate drawing area
mClientArea = mImageListView.ClientRectangle;
if (mImageListView.BorderStyle != System.Windows.Forms.BorderStyle.None)
mClientArea.Inflate(-1, -1);
mItemAreaBounds = mClientArea;
// Allocate space for scrollbars
if (mImageListView.hScrollBar.Visible)
{
mClientArea.Height -= mImageListView.hScrollBar.Height;
mItemAreaBounds.Height -= mImageListView.hScrollBar.Height;
}
if (mImageListView.vScrollBar.Visible)
{
mClientArea.Width -= mImageListView.vScrollBar.Width;
mItemAreaBounds.Width -= mImageListView.vScrollBar.Width;
}
// Allocate space for column headers
if (mImageListView.View == View.Details)
{
int headerHeight = cachedColumnHeaderHeight;
// Location of the column headers
mColumnHeaderBounds.X = mClientArea.Left - mImageListView.ViewOffset.X;
mColumnHeaderBounds.Y = mClientArea.Top;
mColumnHeaderBounds.Height = headerHeight;
mColumnHeaderBounds.Width = mClientArea.Width + mImageListView.ViewOffset.X;
mItemAreaBounds.Y += headerHeight;
mItemAreaBounds.Height -= headerHeight;
}
else
{
mColumnHeaderBounds = Rectangle.Empty;
}
// Modify item area for the gallery view mode
if (mImageListView.View == View.Gallery)
{
mItemAreaBounds.Height = mItemSizeWithMargin.Height;
mItemAreaBounds.Y = mClientArea.Bottom - mItemSizeWithMargin.Height;
}
// Modify item area for the pane view mode
if (mImageListView.View == View.Pane)
{
mItemAreaBounds.Width -= cachedPaneWidth;
mItemAreaBounds.X += cachedPaneWidth;
}
return (mItemAreaBounds.Width > 0 && mItemAreaBounds.Height > 0);
}