protected void InternalConstruct(Control callingControl,
                                         Source source,
                                         Content c,
                                         WindowContent wc,
                                         FloatingForm ff,
                                         DockingManager dm,
                                         Point offset)
        {
            // Store the starting state
            _callingControl = callingControl;
            _source         = source;
            _content        = c;
            _windowContent  = wc;
            _dockingManager = dm;
            _container      = _dockingManager.Container;
            _floatingForm   = ff;
            _hotZones       = null;
            _currentHotZone = null;
            _insideRect     = new Rectangle();
            _outsideRect    = new Rectangle();
            _offset         = offset;

            // Begin tracking straight away
            EnterTrackingMode();
        }
        public override void OnMouseMove(MouseEventArgs e)
        {
            if (_callingControl.Handle != IntPtr.Zero)
            {
                // Convert from Control coordinates to screen coordinates
                Point mousePos = _callingControl.PointToScreen(new Point(e.X, e.Y));

                // Find HotZone this position is inside
                HotZone hz = _hotZones.Contains(mousePos);

                if (hz != _currentHotZone)
                {
                    if (_currentHotZone != null)
                    {
                        _currentHotZone.RemoveIndicator(mousePos);
                    }

                    _currentHotZone = hz;

                    if (_currentHotZone != null)
                    {
                        _currentHotZone.DrawIndicator(mousePos);
                    }
                }
                else
                {
                    if (_currentHotZone != null)
                    {
                        _currentHotZone.UpdateForMousePosition(mousePos, this);
                    }
                }
            }

            base.OnMouseMove(e);
        }