Visual snapping when adding first node or starting feature (fix #8300)

This commit is contained in:
Denis Rouzaud 2013-07-16 08:11:39 +02:00
parent dc489dfc7a
commit 805be41738

View File

@ -105,28 +105,25 @@ void QgsMapToolCapture::currentLayerChanged( QgsMapLayer *layer )
void QgsMapToolCapture::canvasMoveEvent( QMouseEvent * e ) void QgsMapToolCapture::canvasMoveEvent( QMouseEvent * e )
{ {
if ( mCaptureMode == CapturePoint ) QgsPoint mapPoint;
return; QList<QgsSnappingResult> snapResults;
if ( mSnapper.snapToBackgroundLayers( e->pos(), snapResults ) == 0 )
if ( mRubberBand && mCapturing )
{ {
QgsPoint mapPoint; while ( !mSnappingMarkers.isEmpty() )
QList<QgsSnappingResult> snapResults; delete mSnappingMarkers.takeFirst();
if ( mSnapper.snapToBackgroundLayers( e->pos(), snapResults ) == 0 )
foreach ( const QgsSnappingResult &r, snapResults )
{ {
while ( !mSnappingMarkers.isEmpty() ) QgsVertexMarker *m = new QgsVertexMarker( mCanvas );
delete mSnappingMarkers.takeFirst(); m->setIconType( QgsVertexMarker::ICON_CROSS );
m->setColor( Qt::green );
foreach ( const QgsSnappingResult &r, snapResults ) m->setPenWidth( 2 );
{ m->setCenter( r.snappedVertex );
QgsVertexMarker *m = new QgsVertexMarker( mCanvas ); mSnappingMarkers << m;
m->setIconType( QgsVertexMarker::ICON_CROSS ); }
m->setColor( Qt::green );
m->setPenWidth( 1 );
m->setCenter( r.snappedVertex );
mSnappingMarkers << m;
}
if ( mCaptureMode != CapturePoint && mRubberBand && mCapturing )
{
mapPoint = snapPointFromResults( snapResults, e->pos() ); mapPoint = snapPointFromResults( snapResults, e->pos() );
mRubberBand->movePoint( mapPoint ); mRubberBand->movePoint( mapPoint );
} }