private static DockState Save(IDockSplitter split)
 {
     return(new PaneSave()
     {
         panes = split.Layouts.Select(_p => Save((object)_p)).ToArray(), orientation = split.Orientation, clientsize = split.WidgetSize
     });
 }
        public bool HitTest(Point position, out IDockSplitter splitter, out int ind)
        {
            if (position.X >= this.Location.X && position.X < this.Location.X + this.WidgetSize.Width &&
                position.Y >= this.Location.Y && position.Y < this.Location.Y + this.WidgetSize.Height)
            {
                int    cnt = 0, e = 4;
                double v = 0;
                switch (this.Orientation)
                {
                case Orientation.Horizontal: v = this.Location.X; break;

                case Orientation.Vertical: v = this.Location.Y; break;
                }
                foreach (var o in this._dock)
                {
                    if (o.HitTest(position, out splitter, out ind))
                    {
                        if (splitter == null)
                        {
                            return(false);
                        }
                        return(true);
                    }
                    switch (this.Orientation)
                    {
                    case Orientation.Horizontal:
                        v += o.WidgetSize.Width;
                        if (position.X >= v && position.X < v + e)
                        {
                            splitter = this;
                            ind      = cnt;
                            return(true);
                        }
                        break;

                    case Orientation.Vertical:
                        v += o.WidgetSize.Height;
                        if (position.Y >= v && position.Y < v + e)
                        {
                            splitter = this;
                            ind      = cnt;
                            return(true);
                        }
                        break;
                    }
                    v += e;
                    cnt++;
                }
                splitter = null;
                ind      = -1;
                return(true);
            }
            splitter = null;
            ind      = -1;
            return(false);
        }