@@ -201,6 +201,7 @@ Q_GUI_EXPORT extern int qt_defaultDpiX();
201
201
#include "qgsmessageviewer.h"
202
202
#include "qgsmessagebar.h"
203
203
#include "qgsmessagebaritem.h"
204
+ #include "qgsmemoryproviderutils.h"
204
205
#include "qgsmimedatautils.h"
205
206
#include "qgsmessagelog.h"
206
207
#include "qgsmultibandcolorrenderer.h"
@@ -8060,8 +8061,6 @@ QgsVectorLayer *QgisApp::pasteToNewMemoryVector()
8060
8061
8061
8062
QgsWkbTypes::Type wkbType = !typeCounts.isEmpty() ? typeCounts.keys().value( 0 ) : QgsWkbTypes::NoGeometry;
8062
8063
8063
- QString typeName = wkbType != QgsWkbTypes::NoGeometry ? QgsWkbTypes::displayString( wkbType ) : QStringLiteral( "none" );
8064
-
8065
8064
if ( features.isEmpty() )
8066
8065
{
8067
8066
// should not happen
@@ -8072,15 +8071,13 @@ QgsVectorLayer *QgisApp::pasteToNewMemoryVector()
8072
8071
}
8073
8072
else if ( typeCounts.size() > 1 )
8074
8073
{
8074
+ QString typeName = wkbType != QgsWkbTypes::NoGeometry ? QgsWkbTypes::displayString( wkbType ) : QStringLiteral( "none" );
8075
8075
messageBar()->pushMessage( tr( "Paste features" ),
8076
8076
tr( "Multiple geometry types found, features with geometry different from %1 will be created without geometry." ).arg( typeName ),
8077
8077
QgsMessageBar::INFO, messageTimeout() );
8078
8078
}
8079
8079
8080
- typeName += QStringLiteral( "?memoryid=%1" ).arg( QUuid::createUuid().toString() );
8081
- QgsDebugMsg( QString( "output wkbType = %1 typeName = %2" ).arg( wkbType ).arg( typeName ) );
8082
-
8083
- QgsVectorLayer *layer = new QgsVectorLayer( typeName, QStringLiteral( "pasted_features" ), QStringLiteral( "memory" ) );
8080
+ QgsVectorLayer *layer = QgsMemoryProviderUtils::createMemoryLayer( QStringLiteral( "pasted_features" ), QgsFields(), wkbType, clipboard()->crs() );
8084
8081
8085
8082
if ( !layer->isValid() || !layer->dataProvider() )
8086
8083
{
@@ -8092,9 +8089,6 @@ QgsVectorLayer *QgisApp::pasteToNewMemoryVector()
8092
8089
}
8093
8090
8094
8091
layer->startEditing();
8095
- if ( wkbType != QgsWkbTypes::NoGeometry )
8096
- layer->setCrs( clipboard()->crs(), false );
8097
-
8098
8092
Q_FOREACH ( QgsField f, clipboard()->fields().toList() )
8099
8093
{
8100
8094
QgsDebugMsg( QString( "field %1 (%2)" ).arg( f.name(), QVariant::typeToName( f.type() ) ) );
0 commit comments