Skip to content

Commit

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

Fixes #44005
  • Loading branch information
nyalldawson authored and nirvn committed Jul 23, 2021
1 parent 29bdd6a commit daa6df5
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 @@ -4000,7 +4000,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 = std::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 @@ -3054,6 +3054,7 @@ void TestProcessingGui::testFieldWrapper()
std::unique_ptr< QgsProcessingParameterDefinitionWidget > widget = std::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 daa6df5

Please sign in to comment.