Skip to content

Commit

Permalink
Vertex tool, fix escape to stop dragging edge
Browse files Browse the repository at this point in the history
and make keypress handling cleaner
  • Loading branch information
uclaros committed May 21, 2020
1 parent ef01c3c commit f3ae6c1
Showing 1 changed file with 44 additions and 30 deletions.
74 changes: 44 additions & 30 deletions src/app/vertextool/qgsvertextool.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1236,38 +1236,52 @@ void QgsVertexTool::updateFeatureBand( const QgsPointLocator::Match &m )

void QgsVertexTool::keyPressEvent( QKeyEvent *e )
{
if ( !mDraggingVertex && !mDraggingEdge && e->key() == Qt::Key_R && e->modifiers() & Qt::ShiftModifier )
switch ( e->key() )
{
startRangeVertexSelection();
return;
}
if ( mSelectionMethod == SelectionRange && e->key() == Qt::Key_Escape )
{
stopRangeVertexSelection();
return;
}

if ( !mDraggingVertex && mSelectedVertices.count() == 0 )
return;

if ( e->key() == Qt::Key_Delete || e->key() == Qt::Key_Backspace )
{
e->ignore(); // Override default shortcut management
deleteVertex();
}
else if ( e->key() == Qt::Key_Escape )
{
if ( mDraggingVertex )
stopDragging();
}
else if ( e->key() == Qt::Key_Less || e->key() == Qt::Key_Comma )
{
highlightAdjacentVertex( -1 );
}
else if ( e->key() == Qt::Key_Greater || e->key() == Qt::Key_Period )
{
highlightAdjacentVertex( + 1 );
case Qt::Key_Escape:
{
if ( mSelectionMethod == SelectionRange )
stopRangeVertexSelection();
if ( mDraggingVertex || mDraggingEdge )
stopDragging();
break;
}
case Qt::Key_Delete:
case Qt::Key_Backspace:
{
if ( mDraggingVertex || ( !mDraggingEdge && !mSelectedVertices.isEmpty() ) )
{
e->ignore(); // Override default shortcut management
deleteVertex();
}
break;
}
case Qt::Key_R:
{
if ( e->modifiers() & Qt::ShiftModifier && !mDraggingVertex && !mDraggingEdge )
startRangeVertexSelection();
break;
}
case Qt::Key_Less:
case Qt::Key_Comma:
{
if ( !mDraggingVertex && !mDraggingEdge )
highlightAdjacentVertex( -1 );
break;
}
case Qt::Key_Greater:
case Qt::Key_Period:
{
if ( !mDraggingVertex && !mDraggingEdge )
highlightAdjacentVertex( + 1 );
break;
}
default:
{
return;
}
}
return;
}

QgsGeometry QgsVertexTool::cachedGeometry( const QgsVectorLayer *layer, QgsFeatureId fid )
Expand Down

0 comments on commit f3ae6c1

Please sign in to comment.