Skip to content

Commit f445c26

Browse files
wonder-sknirvn
authored andcommitted
Small code cleanup to warm up
1 parent 0d178aa commit f445c26

File tree

4 files changed

+34
-42
lines changed

4 files changed

+34
-42
lines changed

src/app/vertextool/qgsvertexeditor.cpp

+5-11
Original file line numberDiff line numberDiff line change
@@ -294,10 +294,7 @@ bool QgsVertexEditorModel::calcR( int row, double &r, double &minRadius ) const
294294
}
295295

296296

297-
QgsVertexEditor::QgsVertexEditor(
298-
QgsVectorLayer *layer,
299-
QgsSelectedFeature *selectedFeature,
300-
QgsMapCanvas *canvas )
297+
QgsVertexEditor::QgsVertexEditor( QgsMapCanvas *canvas )
301298
: mCanvas( canvas )
302299
{
303300
setWindowTitle( tr( "Vertex Editor" ) );
@@ -328,25 +325,22 @@ QgsVertexEditor::QgsVertexEditor(
328325
layout->addWidget( mHintLabel );
329326

330327
setWidget( content );
331-
332-
updateEditor( layer, selectedFeature );
333328
}
334329

335-
void QgsVertexEditor::updateEditor( QgsVectorLayer *layer, QgsSelectedFeature *selectedFeature )
330+
void QgsVertexEditor::updateEditor( QgsSelectedFeature *selectedFeature )
336331
{
337332
if ( mSelectedFeature )
338333
{
339334
delete mVertexModel;
340335
mVertexModel = nullptr;
341336
}
342337

343-
mLayer = layer;
344338
mSelectedFeature = selectedFeature;
345339

346-
if ( mLayer && mSelectedFeature )
340+
if ( mSelectedFeature )
347341
{
348342
// TODO We really should just update the model itself.
349-
mVertexModel = new QgsVertexEditorModel( mLayer, mSelectedFeature, mCanvas, this );
343+
mVertexModel = new QgsVertexEditorModel( mSelectedFeature->layer(), mSelectedFeature, mCanvas, this );
350344
mTableView->setModel( mVertexModel );
351345

352346
mHintLabel->setVisible( false );
@@ -398,7 +392,7 @@ void QgsVertexEditor::updateVertexSelection( const QItemSelection &selected, con
398392

399393
mSelectedFeature->deselectAllVertices();
400394

401-
QgsCoordinateTransform t( mLayer->crs(), mCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
395+
QgsCoordinateTransform t( mSelectedFeature->layer()->crs(), mCanvas->mapSettings().destinationCrs(), QgsProject::instance() );
402396
std::unique_ptr<QgsRectangle> bbox;
403397
QModelIndexList indexList = selected.indexes();
404398
for ( int i = 0; i < indexList.length(); ++i )

src/app/vertextool/qgsvertexeditor.h

+2-5
Original file line numberDiff line numberDiff line change
@@ -72,13 +72,10 @@ class QgsVertexEditor : public QgsDockWidget
7272
{
7373
Q_OBJECT
7474
public:
75-
QgsVertexEditor( QgsVectorLayer *layer,
76-
QgsSelectedFeature *selectedFeature,
77-
QgsMapCanvas *canvas );
75+
QgsVertexEditor( QgsMapCanvas *canvas );
7876

7977
public:
80-
void updateEditor( QgsVectorLayer *layer, QgsSelectedFeature *selectedFeature );
81-
QgsVectorLayer *mLayer = nullptr;
78+
void updateEditor( QgsSelectedFeature *selectedFeature );
8279
QgsSelectedFeature *mSelectedFeature = nullptr;
8380
QgsMapCanvas *mCanvas = nullptr;
8481
QTableView *mTableView = nullptr;

src/app/vertextool/qgsvertextool.cpp

+24-24
Original file line numberDiff line numberDiff line change
@@ -462,9 +462,10 @@ void QgsVertexTool::cadCanvasPressEvent( QgsMapMouseEvent *e )
462462
{
463463
if ( !mSelectionRect && !mDraggingVertex && !mDraggingEdge )
464464
{
465-
if ( mLastMouseMoveMatch.isValid() && mLastMouseMoveMatch.layer() )
465+
QgsPointLocator::Match m = snapToEditableLayer( e );
466+
if ( m.isValid() && m.layer() )
466467
{
467-
showVertexEditor(); //#spellok
468+
updateVertexEditor( m.layer(), m.featureId() );
468469
}
469470
}
470471
}
@@ -847,8 +848,6 @@ void QgsVertexTool::mouseMoveNotDragging( QgsMapMouseEvent *e )
847848
QgsPointLocator::Match m = snapToEditableLayer( e );
848849
bool targetIsAllowed = ( !mSelectedFeature || ( mSelectedFeature->featureId() == m.featureId() && mSelectedFeature->layer() == m.layer() ) );
849850

850-
mLastMouseMoveMatch = m;
851-
852851
// possibility to move a vertex
853852
if ( m.type() == QgsPointLocator::Vertex && targetIsAllowed )
854853
{
@@ -1074,7 +1073,7 @@ void QgsVertexTool::onCachedGeometryChanged( QgsFeatureId fid, const QgsGeometry
10741073
validateGeometry( layer, fid );
10751074

10761075
if ( mVertexEditor && mSelectedFeature && mSelectedFeature->featureId() == fid && mSelectedFeature->layer() == layer )
1077-
mVertexEditor->updateEditor( mSelectedFeature->layer(), mSelectedFeature.get() );
1076+
mVertexEditor->updateEditor( mSelectedFeature.get() );
10781077
}
10791078

10801079
void QgsVertexTool::onCachedGeometryDeleted( QgsFeatureId fid )
@@ -1089,35 +1088,43 @@ void QgsVertexTool::onCachedGeometryDeleted( QgsFeatureId fid )
10891088
setHighlightedVertices( mSelectedVertices );
10901089
}
10911090

1092-
1093-
void QgsVertexTool::showVertexEditor() //#spellok
1091+
void QgsVertexTool::updateVertexEditor( QgsVectorLayer *layer, QgsFeatureId fid )
10941092
{
1095-
QgsPointLocator::Match m = mLastMouseMoveMatch;
1096-
if ( m.isValid() && m.layer() )
1093+
if ( layer )
10971094
{
1098-
if ( mSelectedFeature && mSelectedFeature->featureId() == m.featureId() && mSelectedFeature->layer() == m.layer() )
1095+
if ( mSelectedFeature && mSelectedFeature->featureId() == fid && mSelectedFeature->layer() == layer )
10991096
{
11001097
// if show feature is called on a feature that's already binded to the vertex editor, toggle it off
11011098
mSelectedFeature.reset();
11021099
if ( mVertexEditor )
11031100
{
1104-
mVertexEditor->updateEditor( nullptr, nullptr );
1101+
mVertexEditor->updateEditor( nullptr );
11051102
}
11061103
return;
11071104
}
11081105

1109-
mSelectedFeature.reset( new QgsSelectedFeature( m.featureId(), m.layer(), mCanvas ) );
1106+
mSelectedFeature.reset( new QgsSelectedFeature( fid, layer, mCanvas ) );
1107+
connect( mSelectedFeature->layer(), &QgsVectorLayer::featureDeleted, this, &QgsVertexTool::cleanEditor );
11101108
for ( int i = 0; i < mSelectedVertices.length(); ++i )
11111109
{
1112-
if ( mSelectedVertices.at( i ).layer == m.layer() && mSelectedVertices.at( i ).fid == m.featureId() )
1110+
if ( mSelectedVertices.at( i ).layer == layer && mSelectedVertices.at( i ).fid == fid )
11131111
{
11141112
mSelectedFeature->selectVertex( mSelectedVertices.at( i ).vertexId );
11151113
}
11161114
}
11171115
}
1116+
1117+
// make sure the vertex editor is alive and visible
1118+
showVertexEditor();
1119+
1120+
mVertexEditor->updateEditor( mSelectedFeature.get() );
1121+
}
1122+
1123+
void QgsVertexTool::showVertexEditor() //#spellok
1124+
{
11181125
if ( !mVertexEditor )
11191126
{
1120-
mVertexEditor.reset( new QgsVertexEditor( m.layer() ? m.layer() : currentVectorLayer(), mSelectedFeature ? mSelectedFeature.get() : nullptr, mCanvas ) );
1127+
mVertexEditor.reset( new QgsVertexEditor( mCanvas ) );
11211128
if ( !QgisApp::instance()->restoreDockWidget( mVertexEditor.get() ) )
11221129
QgisApp::instance()->addDockWidget( Qt::LeftDockWidgetArea, mVertexEditor.get() );
11231130

@@ -1129,16 +1136,9 @@ void QgsVertexTool::showVertexEditor() //#spellok
11291136
}
11301137
else
11311138
{
1132-
mVertexEditor->updateEditor( m.layer(), mSelectedFeature.get() );
1133-
11341139
mVertexEditor->show();
11351140
mVertexEditor->raise();
11361141
}
1137-
1138-
if ( mSelectedFeature )
1139-
{
1140-
connect( mSelectedFeature->layer(), &QgsVectorLayer::featureDeleted, this, &QgsVertexTool::cleanEditor );
1141-
}
11421142
}
11431143

11441144
void QgsVertexTool::cleanupVertexEditor()
@@ -1739,7 +1739,7 @@ void QgsVertexTool::moveVertex( const QgsPointXY &mapPoint, const QgsPointLocato
17391739
}
17401740

17411741
if ( mVertexEditor )
1742-
mVertexEditor->updateEditor( dragLayer, mSelectedFeature.get() );
1742+
mVertexEditor->updateEditor( mSelectedFeature.get() );
17431743

17441744
setHighlightedVertices( mSelectedVertices ); // update positions of existing highlighted vertices
17451745
setHighlightedVerticesVisible( true ); // time to show highlighted vertices again
@@ -1842,7 +1842,7 @@ void QgsVertexTool::applyEditsToLayers( QgsVertexTool::VertexEdits &edits )
18421842

18431843

18441844
if ( mVertexEditor )
1845-
mVertexEditor->updateEditor( layer, mSelectedFeature.get() );
1845+
mVertexEditor->updateEditor( mSelectedFeature.get() );
18461846
}
18471847
}
18481848

@@ -2003,7 +2003,7 @@ void QgsVertexTool::deleteVertex()
20032003
}
20042004

20052005
if ( mVertexEditor && mSelectedFeature )
2006-
mVertexEditor->updateEditor( mSelectedFeature->layer(), mSelectedFeature.get() );
2006+
mVertexEditor->updateEditor( mSelectedFeature.get() );
20072007
}
20082008

20092009
void QgsVertexTool::setHighlightedVertices( const QList<Vertex> &listVertices, HighlightMode mode )

src/app/vertextool/qgsvertextool.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,9 @@ class APP_EXPORT QgsVertexTool : public QgsMapToolAdvancedDigitizing
9696
//! Toggle the vertex editor
9797
void showVertexEditor(); //#spellok
9898

99+
//! Update vertex editor to show feature from the given match
100+
void updateVertexEditor( QgsVectorLayer *layer, QgsFeatureId fid );
101+
99102
private slots:
100103
//! update geometry of our feature
101104
void onCachedGeometryChanged( QgsFeatureId fid, const QgsGeometry &geom );
@@ -406,8 +409,6 @@ class APP_EXPORT QgsVertexTool : public QgsMapToolAdvancedDigitizing
406409

407410
// support for vertex editor
408411

409-
//! most recent match when moving mouse
410-
QgsPointLocator::Match mLastMouseMoveMatch;
411412
//! Selected feature for the vertex editor
412413
std::unique_ptr<QgsSelectedFeature> mSelectedFeature;
413414
//! Dock widget which allows editing vertices

0 commit comments

Comments
 (0)