Skip to content

Commit a9d0130

Browse files
committedMar 1, 2016
Correctly handle pasting geometryless layers as scratch layer
1 parent 7f6446a commit a9d0130

File tree

1 file changed

+5
-9
lines changed

1 file changed

+5
-9
lines changed
 

‎src/app/qgisapp.cpp

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7023,9 +7023,9 @@ QgsVectorLayer *QgisApp::pasteToNewMemoryVector()
70237023
}
70247024
}
70257025

7026-
QGis::WkbType wkbType = !typeCounts.isEmpty() ? typeCounts.keys().value( 0 ) : QGis::WKBPoint;
7026+
QGis::WkbType wkbType = !typeCounts.isEmpty() ? typeCounts.keys().value( 0 ) : QGis::WKBNoGeometry;
70277027

7028-
QString typeName = QString( QGis::featureType( wkbType ) ).remove( "WKB" );
7028+
QString typeName = wkbType != QGis::WKBNoGeometry ? QString( QGis::featureType( wkbType ) ).remove( "WKB" ) : "none";
70297029

70307030
typeName += QString( "?memoryid=%1" ).arg( QUuid::createUuid().toString() );
70317031

@@ -7037,10 +7037,6 @@ QgsVectorLayer *QgisApp::pasteToNewMemoryVector()
70377037
{
70387038
message = tr( "No features in clipboard." ); // should not happen
70397039
}
7040-
else if ( typeCounts.isEmpty() )
7041-
{
7042-
message = tr( "No features with geometry found, point type layer will be created." );
7043-
}
70447040
else if ( typeCounts.size() > 1 )
70457041
{
70467042
message = tr( "Multiple geometry types found, features with geometry different from %1 will be created without geometry." ).arg( typeName );
@@ -7062,7 +7058,8 @@ QgsVectorLayer *QgisApp::pasteToNewMemoryVector()
70627058
}
70637059

70647060
layer->startEditing();
7065-
layer->setCrs( clipboard()->crs(), false );
7061+
if ( wkbType != QGis::WKBNoGeometry )
7062+
layer->setCrs( clipboard()->crs(), false );
70667063

70677064
Q_FOREACH ( QgsField f, clipboard()->fields().toList() )
70687065
{
@@ -7098,13 +7095,12 @@ QgsVectorLayer *QgisApp::pasteToNewMemoryVector()
70987095
feature.geometry()->convertToMultiType();
70997096
}
71007097
}
7101-
if ( ! layer->addFeatures( features ) || !layer->commitChanges() )
7098+
if ( ! layer->addFeatures( features, false ) || !layer->commitChanges() )
71027099
{
71037100
QgsDebugMsg( "Cannot add features or commit changes" );
71047101
delete layer;
71057102
return nullptr;
71067103
}
7107-
layer->removeSelection();
71087104

71097105
QgsDebugMsg( QString( "%1 features pasted to temporary scratch layer" ).arg( layer->featureCount() ) );
71107106
return layer;

0 commit comments

Comments
 (0)
Please sign in to comment.