private static void MergeSubContainers(Container parentContainer)
{
var parentContainerSize = (parentContainer.IsHorizontal)? parentContainer.Width : parentContainer.Height;
for (var parentPIndex = parentContainer.Panels.Count - 1; parentPIndex >= 0 ; parentPIndex--)
{
var childContainer = parentContainer.Panels[parentPIndex] as Container;
if (childContainer == null ||
childContainer.IsHorizontal != parentContainer.IsHorizontal)
continue;
for (var childPIndex = childContainer.Panels.Count - 1; childPIndex > 0 ; childPIndex--)
{
var childPanel = childContainer.Panels[childPIndex];
parentContainer.InsertPanel(childPanel, childContainer, false);
var childPanelSize = (childContainer.IsHorizontal)? childPanel.Width : childPanel.Height;
var rightRPos = 1.0f;
if(parentContainer.Splitters.Count > parentPIndex + 1)
rightRPos = parentContainer.Splitters[parentPIndex + 1].RelativePosition;
var right = rightRPos * parentContainerSize;
var leftSplitter = parentContainer.Splitters[parentPIndex];
leftSplitter.RelativePosition = (right - childPanelSize) / parentContainerSize;
}
ReplaceContainerByPaneGroup(childContainer);
}
parentContainer.Invalidate();
}