Skip to content

Commit d8303a7

Browse files
committed
pass through default values when merging features (followup 099a40b, refs #12842)
1 parent 220affb commit d8303a7

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/app/qgisapp.cpp

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6208,15 +6208,20 @@ void QgisApp::mergeAttributesOfSelectedFeatures()
62086208
continue;
62096209

62106210
QVariant val = merged.at( i );
6211+
const QgsField &fld( vl->fields().at( i ) );
6212+
bool isDefaultValue = vl->fields().fieldOrigin( i ) == QgsFields::OriginProvider &&
6213+
vl->dataProvider() &&
6214+
vl->dataProvider()->defaultValue( vl->fields().fieldOriginIndex( i ) ) == val;
6215+
62116216
// convert to destination data type
6212-
if ( ! vl->fields().at( i ).convertCompatible( val ) )
6217+
if ( !isDefaultValue && !fld.convertCompatible( val ) )
62136218
{
62146219
if ( firstFeature )
62156220
{
62166221
//only warn on first feature
62176222
messageBar()->pushMessage(
62186223
tr( "Invalid result" ),
6219-
tr( "Could not store value '%1' in field of type %2" ).arg( merged.at( i ).toString(), vl->fields().at( i ).typeName() ),
6224+
tr( "Could not store value '%1' in field of type %2" ).arg( merged.at( i ).toString(), fld.typeName() ),
62206225
QgsMessageBar::WARNING );
62216226
}
62226227
}
@@ -6345,8 +6350,12 @@ void QgisApp::mergeSelectedFeatures()
63456350
for ( int i = 0; i < attrs.count(); ++i )
63466351
{
63476352
QVariant val = attrs.at( i );
6353+
bool isDefaultValue = vl->fields().fieldOrigin( i ) == QgsFields::OriginProvider &&
6354+
vl->dataProvider() &&
6355+
vl->dataProvider()->defaultValue( vl->fields().fieldOriginIndex( i ) ) == val;
6356+
63486357
// convert to destination data type
6349-
if ( ! vl->fields().at( i ).convertCompatible( val ) )
6358+
if ( !isDefaultValue && !vl->fields().at( i ).convertCompatible( val ) )
63506359
{
63516360
messageBar()->pushMessage(
63526361
tr( "Invalid result" ),

0 commit comments

Comments
 (0)