/// <summary>
/// Perform mouse movement handling.
/// </summary>
/// <param name="e">A MouseEventArgs that contains the event data.</param>
/// <param name="rawPt">The actual point provided from the windows message.</param>
public override void MouseMove(MouseEventArgs e, Point rawPt)
{
Debug.Assert(e != null);
// Validate incoming reference
if (e == null)
{
throw new ArgumentNullException(nameof(e));
}
if (!_ribbon.InDesignMode)
{
// Only interested if the application window we are inside is active or a docking floating window is active
if (_active || (CommonHelper.ActiveFloatingWindow != null))
{
// Only hot track groups if in the correct mode
if (_minimizedMode == _ribbon.RealMinimizedMode)
{
// Get the view group instance that matches this point
ViewDrawRibbonGroup viewGroup = _viewGroups.ViewGroupFromPoint(new Point(e.X, e.Y));
// Is there a change in active group?
if (viewGroup != _activeGroup)
{
if (_activeGroup != null)
{
_activeGroup.Tracking = false;
_activeGroup.PerformNeedPaint(false, _activeGroup.ClientRectangle);
}
_activeGroup = viewGroup;
if (_activeGroup != null)
{
_activeGroup.Tracking = true;
_activeGroup.PerformNeedPaint(false, _activeGroup.ClientRectangle);
}
}
}
}
}
// Remember to call base class for standard mouse processing
base.MouseMove(e, rawPt);
}