Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b0cdf39

Browse files
committedMar 19, 2023
fix add new mesh face with undo
1 parent b845877 commit b0cdf39

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed
 

‎src/app/mesh/qgsmaptooleditmeshframe.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1438,6 +1438,7 @@ void QgsMapToolEditMeshFrame::setCurrentLayer( QgsMapLayer *layer )
14381438
{
14391439
disconnect( mCurrentLayer, &QgsMeshLayer::editingStarted, this, &QgsMapToolEditMeshFrame::onEditingStarted );
14401440
disconnect( mCurrentLayer, &QgsMeshLayer::editingStopped, this, &QgsMapToolEditMeshFrame::onEditingStopped );
1441+
disconnect( mCurrentLayer->undoStack(), &QUndoStack::indexChanged, this, &QgsMapToolEditMeshFrame::onUndoRedo );
14411442
}
14421443

14431444
mCurrentLayer = meshLayer;
@@ -1454,6 +1455,7 @@ void QgsMapToolEditMeshFrame::setCurrentLayer( QgsMapLayer *layer )
14541455
{
14551456
connect( mCurrentLayer, &QgsMeshLayer::editingStarted, this, &QgsMapToolEditMeshFrame::onEditingStarted );
14561457
connect( mCurrentLayer, &QgsMeshLayer::editingStopped, this, &QgsMapToolEditMeshFrame::onEditingStopped );
1458+
connect( mCurrentLayer->undoStack(), &QUndoStack::indexChanged, this, &QgsMapToolEditMeshFrame::onUndoRedo );
14571459

14581460
if ( mCurrentLayer->isEditable() )
14591461
{
@@ -1926,6 +1928,33 @@ void QgsMapToolEditMeshFrame::reindexMesh()
19261928
mCurrentLayer->reindex( transform, true );
19271929
}
19281930

1931+
void QgsMapToolEditMeshFrame::onUndoRedo()
1932+
{
1933+
switch ( mCurrentState )
1934+
{
1935+
case Digitizing:
1936+
break;
1937+
case AddingNewFace:
1938+
mNewFaceBand->reset( Qgis::GeometryType::Polygon );
1939+
mNewFaceCandidate.clear();
1940+
mNewVerticesForNewFaceCandidate.clear();
1941+
mCurrentState = Digitizing;
1942+
break;
1943+
case MovingSelection:
1944+
mCurrentState = Digitizing;
1945+
mMovingEdgesRubberband->reset( Qgis::GeometryType::Line );
1946+
mMovingFacesRubberband->reset( Qgis::GeometryType::Polygon );
1947+
mMovingFreeVertexRubberband->reset( Qgis::GeometryType::Point );
1948+
mCadDockWidget->setEnabledZ( mCadDockWidget->cadEnabled() );
1949+
break;
1950+
case ForceByLines:
1951+
break;
1952+
case Selecting:
1953+
case SelectingByPolygon:
1954+
break;
1955+
}
1956+
}
1957+
19291958
void QgsMapToolEditMeshFrame::selectByGeometry( const QgsGeometry &geometry, Qt::KeyboardModifiers modifiers )
19301959
{
19311960
if ( mCurrentLayer.isNull() || !mCurrentLayer->triangularMesh() || mCurrentEditor.isNull() )

‎src/app/mesh/qgsmaptooleditmeshframe.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ class APP_EXPORT QgsMapToolEditMeshFrame : public QgsMapToolAdvancedDigitizing
165165
void selectByExpression( const QString &textExpression, Qgis::SelectBehavior behavior, QgsMesh::ElementType elementType );
166166
void onZoomToSelected();
167167
void reindexMesh();
168+
void onUndoRedo();
168169

169170
private:
170171

0 commit comments

Comments
 (0)
Please sign in to comment.