UnityEditor.SplitView.PerformDrop C# (CSharp) Method

PerformDrop() public method

public PerformDrop ( EditorWindow dropWindow, DropInfo dropInfo, Vector2 screenPos ) : bool
dropWindow EditorWindow
dropInfo DropInfo
screenPos Vector2
return bool
        public bool PerformDrop(EditorWindow dropWindow, DropInfo dropInfo, Vector2 screenPos)
        {
            ExtraDropInfo userData = dropInfo.userData as ExtraDropInfo;
            bool rootWindow = userData.rootWindow;
            ViewEdge edge = userData.edge;
            int index = userData.index;
            Rect r = dropInfo.rect;
            bool flag2 = (edge & ViewEdge.Before) != ViewEdge.None;
            bool flag3 = (edge & ViewEdge.FitsVertical) != ViewEdge.None;
            SplitView view = null;
            if ((this.vertical == flag3) || (base.children.Length < 2))
            {
                if (!flag2)
                {
                    if (rootWindow)
                    {
                        index = base.children.Length;
                    }
                    else
                    {
                        index++;
                    }
                }
                view = this;
            }
            else if (rootWindow)
            {
                SplitView view2 = ScriptableObject.CreateInstance<SplitView>();
                view2.position = base.position;
                if (base.window.rootView == this)
                {
                    base.window.rootView = view2;
                }
                else
                {
                    base.parent.AddChild(view2, base.parent.IndexOfChild(this));
                }
                view2.AddChild(this);
                base.position = new Rect(Vector2.zero, base.position.size);
                index = !flag2 ? 1 : 0;
                view = view2;
            }
            else
            {
                SplitView view3 = ScriptableObject.CreateInstance<SplitView>();
                view3.AddChild(base.children[index]);
                this.AddChild(view3, index);
                view3.position = view3.children[0].position;
                view3.children[0].position = new Rect(Vector2.zero, view3.position.size);
                index = !flag2 ? 1 : 0;
                view = view3;
            }
            r.position -= base.screenPosition.position;
            DockArea child = ScriptableObject.CreateInstance<DockArea>();
            view.vertical = flag3;
            view.MakeRoomForRect(r);
            view.AddChild(child, index);
            child.position = r;
            DockArea.s_OriginalDragSource.RemoveTab(dropWindow);
            dropWindow.m_Parent = child;
            child.AddTab(dropWindow);
            this.Reflow();
            RecalcMinMaxAndReflowAll(this);
            child.MakeVistaDWMHappyDance();
            return true;
        }