From 044809cd46d36710d26dd8984c12934b12e68e6e Mon Sep 17 00:00:00 2001 From: Julien Cabieces Date: Wed, 25 Oct 2023 17:40:05 +0200 Subject: [PATCH] Fixes #54141 : increase expression widget text size for long expressions --- src/gui/qgsfieldexpressionwidget.cpp | 5 +++++ tests/src/gui/testqgsfieldexpressionwidget.cpp | 15 +++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/gui/qgsfieldexpressionwidget.cpp b/src/gui/qgsfieldexpressionwidget.cpp index 3422ec9a2b1..8ed8ac0a849 100644 --- a/src/gui/qgsfieldexpressionwidget.cpp +++ b/src/gui/qgsfieldexpressionwidget.cpp @@ -190,6 +190,11 @@ void QgsFieldExpressionWidget::setField( const QString &fieldName ) return; } + if ( fieldName.size() > mCombo->lineEdit()->maxLength() ) + { + mCombo->lineEdit()->setMaxLength( fieldName.size() ); + } + QModelIndex idx = mFieldProxyModel->sourceFieldModel()->indexFromName( fieldName ); if ( !idx.isValid() ) { diff --git a/tests/src/gui/testqgsfieldexpressionwidget.cpp b/tests/src/gui/testqgsfieldexpressionwidget.cpp index 5a4d2370e28..da604d555a2 100644 --- a/tests/src/gui/testqgsfieldexpressionwidget.cpp +++ b/tests/src/gui/testqgsfieldexpressionwidget.cpp @@ -49,6 +49,7 @@ class TestQgsFieldExpressionWidget : public QObject void testIsValid(); void testFilters(); void setNull(); + void testVeryLongExpression(); private: QgsFieldExpressionWidget *mWidget = nullptr; @@ -372,5 +373,19 @@ void TestQgsFieldExpressionWidget::setNull() QgsProject::instance()->removeMapLayer( layer ); } +void TestQgsFieldExpressionWidget::testVeryLongExpression() +{ + QString veryLongExpression; + for ( int i = 0; i < 32770; i++ ) + { + veryLongExpression += "a"; + } + + mWidget->setExpression( veryLongExpression ); + QCOMPARE( veryLongExpression.size(), mWidget->currentText().size() ); +}; + + + QGSTEST_MAIN( TestQgsFieldExpressionWidget ) #include "testqgsfieldexpressionwidget.moc"