Skip to content

Commit

Permalink
Allow disabling snapping on maptools
Browse files Browse the repository at this point in the history
  • Loading branch information
m-kuhn committed Aug 26, 2018
1 parent 93eef9f commit aae6559
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 3 deletions.
14 changes: 14 additions & 0 deletions python/gui/auto_generated/qgsmaptooladvanceddigitizing.sip.in
Expand Up @@ -149,6 +149,20 @@ canvasMoveEvent is triggered and it's not hidden by the cad's
construction mode.

:param e: Mouse events prepared by the cad system
%End

bool snapToGridEnabled() const;
%Docstring
Enables or disables snap to grid of mouse events.

.. versionadded:: 3.4
%End

void setSnapToGridEnabled( bool snapToGridEnabled );
%Docstring
Enables or disables snap to grid of mouse events.

.. versionadded:: 3.4
%End

};
Expand Down
16 changes: 13 additions & 3 deletions src/gui/qgsmaptooladvanceddigitizing.cpp
Expand Up @@ -40,7 +40,7 @@ void QgsMapToolAdvancedDigitizing::canvasPressEvent( QgsMapMouseEvent *e )
}

QgsVectorLayer *layer = currentVectorLayer();
if ( layer )
if ( mSnapToGridEnabled && layer )
{
e->snapToGrid( layer->geometryOptions().geometryPrecision, layer->crs() );
}
Expand Down Expand Up @@ -80,7 +80,7 @@ void QgsMapToolAdvancedDigitizing::canvasReleaseEvent( QgsMapMouseEvent *e )
}

QgsVectorLayer *layer = currentVectorLayer();
if ( layer )
if ( mSnapToGridEnabled && layer )
{
e->snapToGrid( layer->geometryOptions().geometryPrecision, layer->crs() );
}
Expand All @@ -105,7 +105,7 @@ void QgsMapToolAdvancedDigitizing::canvasMoveEvent( QgsMapMouseEvent *e )
}

QgsVectorLayer *layer = currentVectorLayer();
if ( layer )
if ( mSnapToGridEnabled && layer )
{
e->snapToGrid( layer->geometryOptions().geometryPrecision, layer->crs() );
}
Expand Down Expand Up @@ -133,3 +133,13 @@ void QgsMapToolAdvancedDigitizing::cadPointChanged( const QgsPointXY &point )
QMouseEvent *ev = new QMouseEvent( QEvent::MouseMove, mCanvas->mouseLastXY(), Qt::NoButton, Qt::NoButton, Qt::NoModifier );
qApp->postEvent( mCanvas->viewport(), ev ); // event queue will delete the event when processed
}

bool QgsMapToolAdvancedDigitizing::snapToGridEnabled() const
{
return mSnapToGridEnabled;
}

void QgsMapToolAdvancedDigitizing::setSnapToGridEnabled( bool snapToGridEnabled )
{
mSnapToGridEnabled = snapToGridEnabled;
}
16 changes: 16 additions & 0 deletions src/gui/qgsmaptooladvanceddigitizing.h
Expand Up @@ -140,6 +140,20 @@ class GUI_EXPORT QgsMapToolAdvancedDigitizing : public QgsMapToolEdit
*/
virtual void cadCanvasMoveEvent( QgsMapMouseEvent *e ) { Q_UNUSED( e ) }

/**
* Enables or disables snap to grid of mouse events.
*
* \since QGIS 3.4
*/
bool snapToGridEnabled() const;

/**
* Enables or disables snap to grid of mouse events.
*
* \since QGIS 3.4
*/
void setSnapToGridEnabled( bool snapToGridEnabled );

private slots:

/**
Expand All @@ -159,6 +173,8 @@ class GUI_EXPORT QgsMapToolAdvancedDigitizing : public QgsMapToolEdit
bool mAdvancedDigitizingAllowed = true;
//! Whether to snap mouse cursor to map before passing coordinates to cadCanvas*Event()
bool mAutoSnapEnabled = true;
//! Whether to snap to grid before passing coordinates to cadCanvas*Event()
bool mSnapToGridEnabled = true;
};

#endif // QGSMAPTOOLADVANCEDDIGITIZE_H

0 comments on commit aae6559

Please sign in to comment.