Skip to content

Commit

Permalink
nyall's review
Browse files Browse the repository at this point in the history
  • Loading branch information
lbartoletti authored and nyalldawson committed Feb 4, 2020
1 parent 6fe51c4 commit a4d8820
Showing 1 changed file with 30 additions and 25 deletions.
55 changes: 30 additions & 25 deletions src/gui/qgsmaptooldigitizefeature.cpp
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -94,37 +94,42 @@ void QgsMapToolDigitizeFeature::setCheckGeometryType( bool checkGeometryType )


void QgsMapToolDigitizeFeature::keyPressEvent( QKeyEvent *e ) void QgsMapToolDigitizeFeature::keyPressEvent( QKeyEvent *e )
{ {
QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( mLayer ); if ( e && e->key() == Qt::Key_C )
if ( !vlayer )
//if no given layer take the current from canvas
vlayer = currentVectorLayer();

if ( !vlayer )
{ {
notifyNotVectorLayer(); QgsVectorLayer *vlayer = qobject_cast<QgsVectorLayer *>( mLayer );
return; if ( !vlayer )
} //if no given layer take the current from canvas
vlayer = currentVectorLayer();


QgsVectorDataProvider *provider = vlayer->dataProvider(); if ( !vlayer )
{
notifyNotVectorLayer();
return;
}


if ( !( provider->capabilities() & QgsVectorDataProvider::AddFeatures ) ) QgsVectorDataProvider *provider = vlayer->dataProvider();
{
emit messageEmitted( tr( "The data provider for this layer does not support the addition of features." ), Qgis::Warning );
return;
}


if ( !vlayer->isEditable() ) if ( !( provider->capabilities() & QgsVectorDataProvider::AddFeatures ) )
{ {
notifyNotEditableLayer(); emit messageEmitted( tr( "The data provider for this layer does not support the addition of features." ), Qgis::Warning );
return; return;
} }


if ( e && e->key() == Qt::Key_C && mode() == CaptureLine && vlayer->geometryType() == QgsWkbTypes::LineGeometry && mCheckGeometryType ) if ( !vlayer->isEditable() )
{ {
closePolygon(); notifyNotEditableLayer();
QgsMapMouseEvent e2( mCanvas, QEvent::MouseButtonRelease, QPoint( ), Qt::RightButton ); return;
cadCanvasReleaseEvent( &e2 ); }

if ( ( mode() == CaptureLine && vlayer->geometryType() == QgsWkbTypes::LineGeometry && mCheckGeometryType ) || ( mode() == CapturePolygon && vlayer->geometryType() == QgsWkbTypes::PolygonGeometry && mCheckGeometryType ) )
{
closePolygon();
QgsMapMouseEvent e2( mCanvas, QEvent::MouseButtonRelease, QPoint( ), Qt::RightButton );
cadCanvasReleaseEvent( &e2 );
}
} }
else
QgsMapToolCapture::keyPressEvent( e );
} }
void QgsMapToolDigitizeFeature::cadCanvasReleaseEvent( QgsMapMouseEvent *e ) void QgsMapToolDigitizeFeature::cadCanvasReleaseEvent( QgsMapMouseEvent *e )
{ {
Expand Down

0 comments on commit a4d8820

Please sign in to comment.