Skip to content
Permalink
Browse files

[Backport release-3_10] fix edge case where fkey is 0 in relation ref…

…erence widget (#39015)

* fix edge case where fkey is 0 in relation reference widget

* Update qgsfeaturefiltermodel.cpp

* Delete qgsfeaturepickermodelbase.cpp

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Denis Rouzaud <denis.rouzaud@gmail.com>
  • Loading branch information
3 people committed Sep 25, 2020
1 parent 821c5fe commit 9de7be198c66eb85ae4e1247ef998df4fb5fdb7a
@@ -576,7 +576,7 @@ void QgsRelationReferenceWidget::init()
}

// Only connect after iterating, to have only one iterator on the referenced table at once
connect( mComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, &QgsRelationReferenceWidget::comboReferenceChanged );
connect( mComboBox, qgis::overload<int>::of( &QComboBox::currentIndexChanged ), this, &QgsRelationReferenceWidget::comboReferenceChanged );

QApplication::restoreOverrideCursor();

@@ -1041,7 +1041,7 @@ void QgsRelationReferenceWidget::disableChainedComboBoxes( const QComboBox *scb

void QgsRelationReferenceWidget::emitForeignKeysChanged( const QVariantList &foreignKeys, bool force )
{
if ( foreignKeys == mForeignKeys && force == false )
if ( foreignKeys == mForeignKeys && force == false && qVariantListIsNull( foreignKeys ) == qVariantListIsNull( mForeignKeys ) )
return;

mForeignKeys = foreignKeys;
@@ -499,22 +499,27 @@ void TestQgsRelationReferenceWidget::testSetGetForeignKey()
w.setRelation( *mRelation, true );
w.init();

QSignalSpy spy( &w, SIGNAL( foreignKeyChanged( QVariant ) ) );
QSignalSpy spy( &w, &QgsRelationReferenceWidget::foreignKeysChanged );

w.setForeignKeys( QVariantList() << 0 );
QCOMPARE( w.foreignKeys().at( 0 ), QVariant( 0 ) );
QCOMPARE( w.mComboBox->currentText(), QStringLiteral( "(0)" ) );
QCOMPARE( spy.count(), 1 );

w.setForeignKeys( QVariantList() << 11 );
QCOMPARE( w.foreignKeys().at( 0 ), QVariant( 11 ) );
QCOMPARE( w.mComboBox->currentText(), QStringLiteral( "(11)" ) );
QCOMPARE( spy.count(), 1 );
QCOMPARE( spy.count(), 2 );

w.setForeignKeys( QVariantList() << 12 );
QCOMPARE( w.foreignKeys().at( 0 ), QVariant( 12 ) );
QCOMPARE( w.mComboBox->currentText(), QStringLiteral( "(12)" ) );
QCOMPARE( spy.count(), 2 );
QCOMPARE( spy.count(), 3 );

w.setForeignKeys( QVariantList() << QVariant() );
QVERIFY( w.foreignKeys().at( 0 ).isNull() );
QVERIFY( w.foreignKeys().at( 0 ).isValid() );
QCOMPARE( spy.count(), 3 );
QCOMPARE( spy.count(), 4 );
}


0 comments on commit 9de7be1

Please sign in to comment.
You can’t perform that action at this time.