Skip to content

Commit fe2292c

Browse files
committedJan 16, 2018
Fix default value 'apply on update' setting not correctly restored
Fixes #17712
1 parent 749468a commit fe2292c

File tree

7 files changed

+22
-9
lines changed

7 files changed

+22
-9
lines changed
 

‎python/core/qgsdefaultvalue.sip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ not set, the default value will only be used when a feature is created.
3838
%End
3939
public:
4040

41-
QgsDefaultValue( const QString &expression = QString(), bool applyOnUpdate = false );
41+
explicit QgsDefaultValue( const QString &expression = QString(), bool applyOnUpdate = false );
4242
%Docstring
4343
Create a new default value with the given ``expression`` and ``applyOnUpdate`` flag.
4444

‎src/app/qgsattributesformproperties.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,6 @@ void QgsAttributesFormProperties::loadAttributeTypeDialog()
242242
mAttributeTypeDialog->setConstraintExpressionEnforced( cfg.mConstraintStrength.value( QgsFieldConstraints::ConstraintExpression, QgsFieldConstraints::ConstraintStrengthHard ) == QgsFieldConstraints::ConstraintStrengthHard );
243243
mAttributeTypeDialog->setDefaultValueExpression( mLayer->defaultValueDefinition( index ).expression() );
244244
mAttributeTypeDialog->setApplyDefaultValueOnUpdate( mLayer->defaultValueDefinition( index ).applyOnUpdate() );
245-
//confustion (will be removed): das hier funktioniert nicht, es is neu, aber ich weiss nicht woher: mAttributeTypeDialog->setDefaultValueExpression( mLayer->defaultValueExpression( index ) );
246245

247246
mAttributeTypeDialog->setEditorWidgetConfig( cfg.mEditorWidgetConfig );
248247
mAttributeTypeDialog->setEditorWidgetType( cfg.mEditorWidgetType );

‎src/core/qgsdefaultvalue.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class CORE_EXPORT QgsDefaultValue
5757
* Create a new default value with the given \a expression and \a applyOnUpdate flag.
5858
* \see QgsVectorLayer::setDefaultValueDefinition
5959
*/
60-
QgsDefaultValue( const QString &expression = QString(), bool applyOnUpdate = false );
60+
explicit QgsDefaultValue( const QString &expression = QString(), bool applyOnUpdate = false );
6161
bool operator==( const QgsDefaultValue &other ) const;
6262

6363
/**

‎src/core/qgsvectorlayer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3159,9 +3159,9 @@ void QgsVectorLayer::setDefaultValueDefinition( int index, const QgsDefaultValue
31593159
QgsDefaultValue QgsVectorLayer::defaultValueDefinition( int index ) const
31603160
{
31613161
if ( index < 0 || index >= mFields.count() )
3162-
return QString();
3162+
return QgsDefaultValue();
31633163
else
3164-
return mFields.at( index ).defaultValueDefinition().expression();
3164+
return mFields.at( index ).defaultValueDefinition();
31653165
}
31663166

31673167
QSet<QVariant> QgsVectorLayer::uniqueValues( int index, int limit ) const

‎tests/src/core/testqgsfield.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ void TestQgsField::gettersSetters()
135135
QCOMPARE( field.comment(), QString( "comment" ) );
136136
field.setAlias( QStringLiteral( "alias" ) );
137137
QCOMPARE( field.alias(), QString( "alias" ) );
138-
field.setDefaultValueDefinition( QStringLiteral( "1+2" ) );
138+
field.setDefaultValueDefinition( QgsDefaultValue( QStringLiteral( "1+2" ) ) );
139139
QCOMPARE( field.defaultValueDefinition().expression(), QString( "1+2" ) );
140140
QgsFieldConstraints constraints;
141141
constraints.setConstraint( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintOriginProvider );
@@ -244,10 +244,10 @@ void TestQgsField::equality()
244244
QVERIFY( !( field1 == field2 ) );
245245
QVERIFY( field1 != field2 );
246246
field2.setAlias( QString() );
247-
field2.setDefaultValueDefinition( QStringLiteral( "1+2" ) );
247+
field2.setDefaultValueDefinition( QgsDefaultValue( QStringLiteral( "1+2" ) ) );
248248
QVERIFY( !( field1 == field2 ) );
249249
QVERIFY( field1 != field2 );
250-
field2.setDefaultValueDefinition( QString() );
250+
field2.setDefaultValueDefinition( QgsDefaultValue() );
251251
constraints = field2.constraints();
252252
constraints.removeConstraint( QgsFieldConstraints::ConstraintNotNull );
253253
field2.setConstraints( constraints );
@@ -461,7 +461,7 @@ void TestQgsField::dataStream()
461461
original.setTypeName( QStringLiteral( "typename1" ) );
462462
original.setComment( QStringLiteral( "comment1" ) );
463463
original.setAlias( QStringLiteral( "alias" ) );
464-
original.setDefaultValueDefinition( QStringLiteral( "default" ) );
464+
original.setDefaultValueDefinition( QgsDefaultValue( QStringLiteral( "default" ) ) );
465465
QgsFieldConstraints constraints;
466466
constraints.setConstraint( QgsFieldConstraints::ConstraintNotNull, QgsFieldConstraints::ConstraintOriginProvider );
467467
constraints.setConstraint( QgsFieldConstraints::ConstraintUnique, QgsFieldConstraints::ConstraintOriginLayer );

‎tests/src/python/test_qgsvectorlayer.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2061,14 +2061,28 @@ def testGetSetDefaults(self):
20612061
layer.setDefaultValueDefinition(0, QgsDefaultValue("'test'"))
20622062
self.assertTrue(layer.defaultValueDefinition(0))
20632063
self.assertEqual(layer.defaultValueDefinition(0).expression(), "'test'")
2064+
self.assertFalse(layer.defaultValueDefinition(0).applyOnUpdate())
20642065
self.assertFalse(layer.defaultValueDefinition(1))
2066+
self.assertFalse(layer.defaultValueDefinition(1).applyOnUpdate())
20652067
self.assertFalse(layer.defaultValueDefinition(2))
2068+
self.assertFalse(layer.defaultValueDefinition(2).applyOnUpdate())
20662069
self.assertEqual(layer.fields().at(0).defaultValueDefinition().expression(), "'test'")
20672070

20682071
layer.setDefaultValueDefinition(1, QgsDefaultValue("2+2"))
20692072
self.assertEqual(layer.defaultValueDefinition(0).expression(), "'test'")
2073+
self.assertFalse(layer.defaultValueDefinition(0).applyOnUpdate())
20702074
self.assertEqual(layer.defaultValueDefinition(1).expression(), "2+2")
2075+
self.assertFalse(layer.defaultValueDefinition(1).applyOnUpdate())
20712076
self.assertFalse(layer.defaultValueDefinition(2))
2077+
self.assertFalse(layer.defaultValueDefinition(2).applyOnUpdate())
2078+
self.assertEqual(layer.fields().at(0).defaultValueDefinition().expression(), "'test'")
2079+
self.assertEqual(layer.fields().at(1).defaultValueDefinition().expression(), "2+2")
2080+
2081+
layer.setDefaultValueDefinition(1, QgsDefaultValue("2+2", True))
2082+
self.assertEqual(layer.defaultValueDefinition(0).expression(), "'test'")
2083+
self.assertFalse(layer.defaultValueDefinition(0).applyOnUpdate())
2084+
self.assertEqual(layer.defaultValueDefinition(1).expression(), "2+2")
2085+
self.assertTrue(layer.defaultValueDefinition(1).applyOnUpdate())
20722086
self.assertEqual(layer.fields().at(0).defaultValueDefinition().expression(), "'test'")
20732087
self.assertEqual(layer.fields().at(1).defaultValueDefinition().expression(), "2+2")
20742088

0 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)
Please sign in to comment.