Skip to content

Commit 0b136af

Browse files
PeterPetriknyalldawson
authored andcommitted
fixes #13668 (Delete does not work in the Vertex Editor)
1 parent 300785b commit 0b136af

File tree

4 files changed

+55
-21
lines changed

4 files changed

+55
-21
lines changed

src/app/nodetool/qgsmaptoolnodetool.cpp

+33-21
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,7 @@ void QgsMapToolNodeTool::canvasPressEvent( QgsMapMouseEvent* e )
254254
mIsPoint = vlayer->geometryType() == QGis::Point;
255255
mNodeEditor = new QgsNodeEditor( vlayer, mSelectedFeature, mCanvas );
256256
QgisApp::instance()->addDockWidget( Qt::LeftDockWidgetArea, mNodeEditor );
257+
connect( mNodeEditor, SIGNAL( deleteSelectedRequested() ), this, SLOT( deleteNodeSelection() ) );
257258
}
258259
else
259260
{
@@ -646,9 +647,9 @@ void QgsMapToolNodeTool::canvasDoubleClickEvent( QgsMapMouseEvent* e )
646647
mCanvas->refresh();
647648
}
648649

649-
void QgsMapToolNodeTool::keyPressEvent( QKeyEvent* e )
650+
void QgsMapToolNodeTool::deleteNodeSelection()
650651
{
651-
if ( mSelectedFeature && ( e->key() == Qt::Key_Backspace || e->key() == Qt::Key_Delete ) )
652+
if ( mSelectedFeature )
652653
{
653654
int firstSelectedIndex = firstSelectedVertex();
654655
if ( firstSelectedIndex == -1 )
@@ -672,29 +673,40 @@ void QgsMapToolNodeTool::keyPressEvent( QKeyEvent* e )
672673
safeSelectVertex( nextVertexToSelect );
673674
}
674675
mCanvas->refresh();
675-
676-
// Override default shortcut management in MapCanvas
677-
e->ignore();
678676
}
679-
else if ( mSelectedFeature && ( e->key() == Qt::Key_Less || e->key() == Qt::Key_Comma ) )
680-
{
681-
int firstSelectedIndex = firstSelectedVertex();
682-
if ( firstSelectedIndex == -1 )
683-
return;
677+
}
684678

685-
mSelectedFeature->deselectAllVertexes();
686-
safeSelectVertex( firstSelectedIndex - 1 );
687-
e->ignore();
688-
}
689-
else if ( mSelectedFeature && ( e->key() == Qt::Key_Greater || e->key() == Qt::Key_Period ) )
679+
void QgsMapToolNodeTool::keyPressEvent( QKeyEvent* e )
680+
{
681+
if ( mSelectedFeature )
690682
{
691-
int firstSelectedIndex = firstSelectedVertex();
692-
if ( firstSelectedIndex == -1 )
693-
return;
683+
if ( e->key() == Qt::Key_Backspace || e->key() == Qt::Key_Delete )
684+
{
685+
this->deleteNodeSelection();
694686

695-
mSelectedFeature->deselectAllVertexes();
696-
safeSelectVertex( firstSelectedIndex + 1 );
697-
e->ignore();
687+
// Override default shortcut management in MapCanvas
688+
e->ignore();
689+
}
690+
else if ( e->key() == Qt::Key_Less || e->key() == Qt::Key_Comma )
691+
{
692+
int firstSelectedIndex = firstSelectedVertex();
693+
if ( firstSelectedIndex == -1 )
694+
return;
695+
696+
mSelectedFeature->deselectAllVertexes();
697+
safeSelectVertex( firstSelectedIndex - 1 );
698+
e->ignore();
699+
}
700+
else if ( e->key() == Qt::Key_Greater || e->key() == Qt::Key_Period )
701+
{
702+
int firstSelectedIndex = firstSelectedVertex();
703+
if ( firstSelectedIndex == -1 )
704+
return;
705+
706+
mSelectedFeature->deselectAllVertexes();
707+
safeSelectVertex( firstSelectedIndex + 1 );
708+
e->ignore();
709+
}
698710
}
699711
}
700712

src/app/nodetool/qgsmaptoolnodetool.h

+5
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,11 @@ class QgsMapToolNodeTool: public QgsMapToolEdit
6565
*/
6666
void editingToggled();
6767

68+
/*
69+
* delete all selected nodes and select next available node
70+
*/
71+
void deleteNodeSelection();
72+
6873
private:
6974
/**
7075
* Get the feature on the mouse click

src/app/nodetool/qgsnodeeditor.cpp

+11
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
#include <QHeaderView>
2828
#include <QVBoxLayout>
2929
#include <QStyledItemDelegate>
30+
#include <QKeyEvent>
3031
#include <QLineEdit>
3132
#include <QVector2D>
3233

@@ -379,6 +380,16 @@ void QgsNodeEditor::zoomToNode( int idx )
379380
}
380381
}
381382

383+
void QgsNodeEditor::keyPressEvent( QKeyEvent * e )
384+
{
385+
if ( e->key() == Qt::Key_Backspace || e->key() == Qt::Key_Delete )
386+
{
387+
emit deleteSelectedRequested();
388+
389+
// Override default shortcut management in MapCanvas
390+
e->ignore();
391+
}
392+
}
382393

383394
//
384395
// CoordinateItemDelegate

src/app/nodetool/qgsnodeeditor.h

+6
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ class QgsNodeEditor : public QDockWidget
8484
QTableView* mTableView;
8585
QgsNodeEditorModel* mNodeModel;
8686

87+
signals:
88+
void deleteSelectedRequested( );
89+
90+
protected:
91+
void keyPressEvent( QKeyEvent * event );
92+
8793
private slots:
8894
void updateTableSelection();
8995
void updateNodeSelection( const QItemSelection& selected, const QItemSelection& deselected );

0 commit comments

Comments
 (0)