private bool CheckDockLocation(MultiSplitContainer container) { var horizontal = container.Horizontal; var absoluteBounds = container.Parent.RectangleToScreen(container.Bounds); if (!absoluteBounds.Contains(Cursor.Position)) return false; foreach (var panel in container.Panels) { if (CheckGroupDock(panel.ControlContainer.Controls[0] as IdePanel)) return true; } var splits = new List<LayoutSplit>(); var splitIndex = 0; var closestSplit = new LayoutSplit { Location = horizontal ? absoluteBounds.Left : absoluteBounds.Top, Index = splitIndex, Parent = container, Horizontal = horizontal }; foreach (var split in container.Splits) splits.Add(new LayoutSplit { Location = closestSplit.Location + split, Index = ++splitIndex, Parent = container, Horizontal = horizontal }); SuggestClosestSplit(closestSplit, splits, absoluteBounds, horizontal); return true; }
private void AddPanelToSplitContainer(MultiSplitContainer multiSplitParent, IdePanel panel, int index) { var splitPanel = multiSplitParent.AddPanel(index); splitPanel.Add(panel); }