public DockingHelper(DockBayFloating owner, Form dockOwner)
 {
     InitializeComponent();
     ShowInTaskbar = false;
     TransparencyKey = BackColor;
     owner.FloatFormMove += new FloatFormEventHandler(owner_FloatFormMove);
     owner.FloatFormEndMove += new FloatFormEventHandler(owner_FloatFormEndMove);
     _owner = owner;
 }
        public DockFormFloating(DockBay root)
        {
            InitializeComponent();

            DockBay = new DockBayFloating(this, root);
            DockBay.PaneRemoved += _bay_PaneRemoved;
            DockBay.Disposed += DockBay_Disposed;
            DockBay.Dock = DockStyle.Fill;
            Controls.Add(DockBay);
        }
            public static DockNeigh InitializeNeigh(DockBayFloating node, DockBay root)
            {
                var neigh = new DockBayFloating.DockNeigh(root);
                neigh.Owner = node;
                DockBaseNeigh.InitializeOf(neigh, node);
                DockBayBase.DockNeigh.InitEvent(neigh, node);

                return neigh;
            }
 void otherForm_FormMoving(object sender, EventArgs e)
 {
     var form = (DockFormFloating)sender;
     var mousePosition = Control.MousePosition;
     var childAtPoint = GetChildAtPoint(PointToClient(mousePosition)) as DockPaneBase;
     var flag = Parent.RectangleToScreen(Bounds).Contains(mousePosition);
     if (TopLevelControl != form)
     {
         if (flag)
         {
             foreach (DockFormFloating floating2 in ((DockNeigh)Neigh).TopLevelRootBay.FloatFormOrder)
             {
                 if (floating2.Bounds.Contains(mousePosition) && (floating2 != form))
                 {
                     if (floating2.DockBay != this)
                     {
                         flag = false;
                     }
                     break;
                 }
             }
         }
         if (flag)
         {
             OnFloatFormMove(new FloatFormEventArgs(form, childAtPoint));
             if ((childAtPoint != _pane) || (flag != _isFloatFormOver))
             {
                 OnFloatFormOver(new FloatFormEventArgs(form, childAtPoint));
                 OnFloatFormEnter(new FloatFormEventArgs(form, childAtPoint));
             }
             _pane = childAtPoint;
         }
         else if (!flag && (flag != _isFloatFormOver))
         {
             OnFloatFormOver(new FloatFormEventArgs(form, childAtPoint));
             OnFloatFormLeave(new FloatFormEventArgs(form, childAtPoint));
             _pane = null;
         }
         _dragBay = form.DockBay;
     }
     _isFloatFormOver = flag;
 }
 void floatForm_FormMoving(object sender, EventArgs e)
 {
     var form = (DockFormFloating)sender;
     var mousePosition = Control.MousePosition;
     var childAtPoint = GetChildAtPoint(PointToClient(mousePosition)) as DockPaneBase;
     var flag = Parent.RectangleToScreen(Bounds).Contains(mousePosition);
     if (flag)
     {
         foreach (var floatBay in FloatFormOrder)
             if ((floatBay != form) && floatBay.Bounds.Contains(mousePosition))
             {
                 flag = false;
                 childAtPoint = null;
             }
     }
     if (flag)
     {
         OnFloatFormMove(new FloatFormEventArgs(form, childAtPoint));
         if ((childAtPoint != _pane) || (flag != _isFloatFormOver))
         {
             OnFloatFormOver(new FloatFormEventArgs(form, childAtPoint));
             OnFloatFormEnter(new FloatFormEventArgs(form, childAtPoint));
         }
         _pane = childAtPoint;
     }
     else if (!flag && (flag != _isFloatFormOver))
     {
         OnFloatFormOver(new FloatFormEventArgs(form, childAtPoint));
         OnFloatFormLeave(new FloatFormEventArgs(form, childAtPoint));
     }
     _dragBay = form.DockBay;
     _isFloatFormOver = flag;
 }