protected override void OnSizeAllocated (Rectangle allocation)
{
const int overviewWidth = 16;
int vwidth = 1;
bool hScrollBarVisible = hScrollBars[0].Visible;
int hheight = hScrollBarVisible ? hScrollBars[0].Requisition.Height : 0;
int headerSize = 0;
if (headerWidgets != null)
headerSize = System.Math.Max (headerWidgets[0].SizeRequest ().Height, 16);
Rectangle childRectangle = new Rectangle (allocation.X + overviewWidth + 1, allocation.Y + headerSize + 1, allocation.Width - vwidth - overviewWidth * 2, allocation.Height - hheight - headerSize - 1);
leftDiffScrollBar.SizeAllocate (new Rectangle (allocation.Left, childRectangle.Y, overviewWidth - 1, childRectangle.Height));
rightDiffScrollBar.SizeAllocate (new Rectangle (allocation.Right - overviewWidth + 1, childRectangle.Y, overviewWidth - 1, childRectangle.Height ));
const int middleAreaWidth = 42;
int editorWidth = (childRectangle.Width - middleAreaWidth * (editors.Length - 1)) / editors.Length;
for (int i = 0; i < editors.Length; i++) {
Rectangle editorRectangle = new Rectangle (childRectangle.X + (editorWidth + middleAreaWidth) * i , childRectangle.Top, editorWidth, childRectangle.Height);
editors[i].SizeAllocate (editorRectangle);
if (hScrollBarVisible) {
hScrollBars[i].SizeAllocate (new Rectangle (editorRectangle.X, editorRectangle.Y + editorRectangle.Height, editorRectangle.Width, hheight));
}
if (headerWidgets != null)
headerWidgets[i].SizeAllocate (new Rectangle (editorRectangle.X, allocation.Y + 1, editorRectangle.Width, headerSize));
}
for (int i = 0; i < middleAreas.Length; i++) {
middleAreas[i].SizeAllocate (new Rectangle (childRectangle.X + editorWidth * (i + 1) + middleAreaWidth * i, childRectangle.Top, middleAreaWidth + 1, childRectangle.Height));
}
base.OnSizeAllocated (allocation);
}