Skip to content

Commit

Permalink
Don't report legend filter by expression as enabled if the expression…
Browse files Browse the repository at this point in the history
… is empty

Can cause issues when opening very old projects, where the legend expression
builder will automatically open immediately upon selecting a layer
  • Loading branch information
nyalldawson committed Jul 23, 2020
1 parent ddb67fd commit 4988694
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
7 changes: 4 additions & 3 deletions src/core/layertree/qgslayertreeutils.cpp
Expand Up @@ -429,14 +429,15 @@ void QgsLayerTreeUtils::updateEmbeddedGroupsProjectPath( QgsLayerTreeGroup *grou
void QgsLayerTreeUtils::setLegendFilterByExpression( QgsLayerTreeLayer &layer, const QString &expr, bool enabled )
{
layer.setCustomProperty( QStringLiteral( "legend/expressionFilter" ), expr );
layer.setCustomProperty( QStringLiteral( "legend/expressionFilterEnabled" ), enabled );
layer.setCustomProperty( QStringLiteral( "legend/expressionFilterEnabled" ), enabled && !expr.isEmpty() );
}

QString QgsLayerTreeUtils::legendFilterByExpression( const QgsLayerTreeLayer &layer, bool *enabled )
{
const QString expression = layer.customProperty( QStringLiteral( "legend/expressionFilter" ), QString() ).toString();
if ( enabled )
*enabled = layer.customProperty( QStringLiteral( "legend/expressionFilterEnabled" ), "" ).toBool();
return layer.customProperty( QStringLiteral( "legend/expressionFilter" ), "" ).toString();
*enabled = !expression.isEmpty() && layer.customProperty( QStringLiteral( "legend/expressionFilterEnabled" ), QString() ).toBool();
return expression;
}

bool QgsLayerTreeUtils::hasLegendFilterExpression( const QgsLayerTreeGroup &group )
Expand Down
4 changes: 2 additions & 2 deletions src/gui/qgslegendfilterbutton.cpp
Expand Up @@ -92,12 +92,12 @@ void QgsLegendFilterButton::updateMenu()
if ( !mExpression.isEmpty() )
{
mClearExpressionAction->setEnabled( true );
mSetExpressionAction->setText( QString( tr( "Edit filter expression (current: %1)" ) ).arg( mExpression ) );
mSetExpressionAction->setText( tr( "Edit Filter Expression (current: %1)" ).arg( mExpression ) );
}
else
{
mClearExpressionAction->setEnabled( false );
mSetExpressionAction->setText( tr( "Edit filter expression" ) );
mSetExpressionAction->setText( tr( "Edit Filter Expression" ) );
}
}

Expand Down

0 comments on commit 4988694

Please sign in to comment.