Skip to content

Commit

Permalink
support adding multi lines as a part
Browse files Browse the repository at this point in the history
  • Loading branch information
3nids committed Jan 28, 2022
1 parent 4beb70b commit a63af99
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion src/core/geometry/qgsgeometryeditutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,28 @@ Qgis::GeometryOperationResult QgsGeometryEditUtils::addPart( QgsAbstractGeometry
}
else
{
added = geomCollection->addGeometry( part.release() );
if ( QgsWkbTypes::flatType( part->wkbType() ) == QgsWkbTypes::MultiLineString
|| QgsWkbTypes::flatType( part->wkbType() ) == QgsWkbTypes::MultiCurve )
{
std::unique_ptr<QgsGeometryCollection> parts( static_cast<QgsGeometryCollection *>( part.release() ) );

int i;
const int n = geomCollection->numGeometries();
for ( i = 0; i < parts->numGeometries() && geomCollection->addGeometry( parts->geometryN( i )->clone() ); i++ )
;

added = i == parts->numGeometries();
if ( !added )
{
while ( geomCollection->numGeometries() > n )
geomCollection->removeGeometry( n );
return Qgis::GeometryOperationResult::InvalidInputGeometryType;
}
}
else
{
added = geomCollection->addGeometry( part.release() );
}
}
return added ? Qgis::GeometryOperationResult::Success : Qgis::GeometryOperationResult::InvalidInputGeometryType;
}
Expand Down

0 comments on commit a63af99

Please sign in to comment.