Skip to content

Commit

Permalink
[processing] Fix default value of multiple field selection inputs
Browse files Browse the repository at this point in the history
in models cannot be set to no value

Fixes #44005
  • Loading branch information
nyalldawson committed Jul 21, 2021
1 parent 27396a2 commit 4054067
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
8 changes: 7 additions & 1 deletion src/gui/processing/qgsprocessingwidgetwrapperimpl.cpp
Expand Up @@ -3928,7 +3928,13 @@ QgsProcessingFieldParameterDefinitionWidget::QgsProcessingFieldParameterDefiniti
QgsProcessingParameterDefinition *QgsProcessingFieldParameterDefinitionWidget::createParameter( const QString &name, const QString &description, QgsProcessingParameterDefinition::Flags flags ) const
{
QgsProcessingParameterField::DataType dataType = static_cast< QgsProcessingParameterField::DataType >( mDataTypeComboBox->currentData().toInt() );
auto param = qgis::make_unique< QgsProcessingParameterField >( name, description, mDefaultLineEdit->text(), mParentLayerComboBox->currentData().toString(), dataType, mAllowMultipleCheckBox->isChecked(), false, mDefaultToAllCheckBox->isChecked() );

QVariant defaultValue;
if ( !mDefaultLineEdit->text().trimmed().isEmpty() )
{
defaultValue = mDefaultLineEdit->text();
}
auto param = std::make_unique< QgsProcessingParameterField >( name, description, defaultValue, mParentLayerComboBox->currentData().toString(), dataType, mAllowMultipleCheckBox->isChecked(), false, mDefaultToAllCheckBox->isChecked() );
param->setFlags( flags );
return param.release();
}
Expand Down
1 change: 1 addition & 0 deletions tests/src/gui/testprocessinggui.cpp
Expand Up @@ -3024,6 +3024,7 @@ void TestProcessingGui::testFieldWrapper()
std::unique_ptr< QgsProcessingParameterDefinitionWidget > widget = qgis::make_unique< QgsProcessingParameterDefinitionWidget >( QStringLiteral( "field" ), context, widgetContext );
std::unique_ptr< QgsProcessingParameterDefinition > def( widget->createParameter( QStringLiteral( "param_name" ) ) );
QCOMPARE( def->name(), QStringLiteral( "param_name" ) );
QVERIFY( !def->defaultValue().isValid() );
QVERIFY( !( def->flags() & QgsProcessingParameterDefinition::FlagOptional ) ); // should default to mandatory
QVERIFY( !( def->flags() & QgsProcessingParameterDefinition::FlagAdvanced ) );

Expand Down

0 comments on commit 4054067

Please sign in to comment.