Fix changing source effect properties doesn't "stick"

Fixes #31118
This commit is contained in:
Nyall Dawson 2019-08-07 08:58:23 +10:00
parent 99594147b1
commit 238d0a0f9e
2 changed files with 15 additions and 1 deletions

View File

@ -158,6 +158,12 @@ bool QgsPaintEffectRegistry::isDefaultStack( QgsPaintEffect *effect )
if ( !dynamic_cast< QgsInnerGlowEffect * >( effectStack->effect( 4 ) ) )
return false;
//we don't go as far as to check the individual effect's properties
QgsDrawSourceEffect *sourceEffect = static_cast< QgsDrawSourceEffect * >( effectStack->effect( 2 ) );
if ( !qgsDoubleNear( sourceEffect->opacity(), 1.0 ) )
return false;
if ( sourceEffect->blendMode() != QPainter::CompositionMode_SourceOver )
return false;
//we don't go as far as to check disabled effect's properties
return true;
}

View File

@ -174,6 +174,14 @@ void TestQgsPaintEffectRegistry::defaultStack()
QgsPaintEffect *effect2 = new DummyPaintEffect();
QVERIFY( !registry->isDefaultStack( effect2 ) );
delete effect2;
effect = static_cast<QgsEffectStack *>( registry->defaultStack() );
static_cast< QgsDrawSourceEffect * >( effect->effect( 2 ) )->setOpacity( 0.5 );
QVERIFY( !registry->isDefaultStack( effect ) );
static_cast< QgsDrawSourceEffect * >( effect->effect( 2 ) )->setOpacity( 1.0 );
QVERIFY( registry->isDefaultStack( effect ) );
static_cast< QgsDrawSourceEffect * >( effect->effect( 2 ) )->setBlendMode( QPainter::CompositionMode_Lighten );
QVERIFY( !registry->isDefaultStack( effect ) );
}
QGSTEST_MAIN( TestQgsPaintEffectRegistry )