void QgsMapToolAdvancedDigitizing::canvasMoveEvent( QgsMapMouseEvent *e )
{
  if ( isAdvancedDigitizingAllowed() && mCadDockWidget->cadEnabled() )
  {
    mCadDockWidget->applyConstraints( e );     // updates event's map point

    // perpendicular/parallel constraint
    // do a soft lock when snapping to a segment
    mCadDockWidget->alignToSegment( e, QgsAdvancedDigitizingDockWidget::CadConstraint::SoftLock );
    mCadDockWidget->updateCadPaintItem();
  }
  else if ( isAutoSnapEnabled() )
  {
    e->snapPoint();
  }

  cadCanvasMoveEvent( e );
}
void QgsMapToolAdvancedDigitizing::canvasMoveEvent( QgsMapMouseEvent* e )
{
  snap( e );
  if ( !mCadDockWidget->canvasMoveEvent( e ) )
    cadCanvasMoveEvent( e );
}