/// <summary> /// Process a change in mouse position. /// </summary> /// <param name="e">Mouse event information that triggered call.</param> 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 = FindHotZone(mousePos); if (hz != _currentHotZone) { if (_currentHotZone != null) { _currentHotZone.RemoveIndicator(DragFeedback, mousePos); } _currentHotZone = hz; if (_currentHotZone != null) { _currentHotZone.DrawIndicator(DragFeedback, mousePos); } } else { if (_currentHotZone != null) { _currentHotZone.UpdateForMousePosition(DragFeedback, mousePos, this); } } } base.OnMouseMove(e); }
/// <summary> /// Exit hot tracking mode. /// </summary> /// <param name="e">Mouse event information that triggered call.</param> /// <returns></returns> public override bool ExitTrackingMode(MouseEventArgs e) { // Have we exiting tracking mode? if (Tracking) { base.ExitTrackingMode(e); // Remove feedback from display DragFeedback.Quit(); // Ensure any additional indicators are removed CleanupHotAreas(); // Is there a current HotZone active? if (_currentHotZone != null) { // Convert from Control coordinates to screen coordinates Point mousePos = CallingControl.PointToScreen(new Point(e.X, e.Y)); // Let the zone apply whatever change it represents bool ret = _currentHotZone.ApplyChange(mousePos, this); // If a change occured, need to recalculate sizing if (ret) { DockingManager.CheckResized(); } return(ret); } } return(false); }
/// <summary> /// Process a mouse button up call. /// </summary> /// <param name="e">Mouse event information that triggered call.</param> /// <returns>true if redocking action occured;false otherwise.</returns> public override bool OnMouseUp(MouseEventArgs e) { if (CallingControl.Handle != IntPtr.Zero) { if (_currentHotZone != null) { _currentHotZone.RemoveIndicator(DragFeedback, CallingControl.PointToScreen(new Point(e.X, e.Y))); } } return(base.OnMouseUp(e)); }