Allow cancelation of polygon/polyline creation

This commit is contained in:
Nyall Dawson 2017-10-18 08:02:11 +10:00
parent 4e8483ecfb
commit 87ef5c52b0
3 changed files with 35 additions and 0 deletions

View File

@ -45,6 +45,8 @@ class QgsLayoutViewToolAddNodeItem : QgsLayoutViewTool
virtual void layoutReleaseEvent( QgsLayoutViewMouseEvent *event );
virtual void keyPressEvent( QKeyEvent *event );
virtual void deactivate();

View File

@ -111,6 +111,38 @@ void QgsLayoutViewToolAddNodeItem::layoutReleaseEvent( QgsLayoutViewMouseEvent *
}
}
void QgsLayoutViewToolAddNodeItem::keyPressEvent( QKeyEvent *event )
{
if ( !mRubberBand || event->isAutoRepeat() )
{
event->ignore();
return;
}
if ( event->key() == Qt::Key_Delete || event->key() == Qt::Key_Backspace )
{
if ( mPolygon.size() > 2 )
{
//remove last added vertex
mPolygon.pop_back();
setRubberBandNodes();
}
else
{
// all deleted, cancel
mRubberBand.reset();
}
}
else if ( event->key() == Qt::Key_Escape )
{
mRubberBand.reset();
}
else
{
event->ignore();
}
}
void QgsLayoutViewToolAddNodeItem::deactivate()
{
if ( mRubberBand )

View File

@ -55,6 +55,7 @@ class GUI_EXPORT QgsLayoutViewToolAddNodeItem : public QgsLayoutViewTool
void layoutPressEvent( QgsLayoutViewMouseEvent *event ) override;
void layoutMoveEvent( QgsLayoutViewMouseEvent *event ) override;
void layoutReleaseEvent( QgsLayoutViewMouseEvent *event ) override;
void keyPressEvent( QKeyEvent *event ) override;
void deactivate() override;
signals: