Skip to content

Commit 3883547

Browse files
committed
Do not refresh stats when opening the stat summary field combo box
Without this change, stats are calculated when users simply open the combo box to select a new field. With large datasets, it freezes QGIS for a long time, and the combo box end up never opening.
1 parent 7bf0a7f commit 3883547

File tree

2 files changed

+13
-1
lines changed

2 files changed

+13
-1
lines changed

src/app/qgsstatisticalsummarydockwidget.cpp

+10-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ QgsStatisticalSummaryDockWidget::QgsStatisticalSummaryDockWidget( QWidget *paren
8888
mFieldExpressionWidget->setLayer( mLayerComboBox->layer( 0 ) );
8989

9090
connect( mLayerComboBox, &QgsMapLayerComboBox::layerChanged, this, &QgsStatisticalSummaryDockWidget::layerChanged );
91-
connect( mFieldExpressionWidget, static_cast<void ( QgsFieldExpressionWidget::* )( const QString & )>( &QgsFieldExpressionWidget::fieldChanged ), this, &QgsStatisticalSummaryDockWidget::refreshStatistics );
91+
connect( mFieldExpressionWidget, static_cast<void ( QgsFieldExpressionWidget::* )( const QString & )>( &QgsFieldExpressionWidget::fieldChanged ), this, &QgsStatisticalSummaryDockWidget::fieldChanged );
9292
connect( mSelectedOnlyCheckBox, &QAbstractButton::toggled, this, &QgsStatisticalSummaryDockWidget::refreshStatistics );
9393
connect( mButtonRefresh, &QAbstractButton::clicked, this, &QgsStatisticalSummaryDockWidget::refreshStatistics );
9494
connect( QgsProject::instance(), static_cast<void ( QgsProject::* )( const QStringList & )>( &QgsProject::layersWillBeRemoved ), this, &QgsStatisticalSummaryDockWidget::layersRemoved );
@@ -101,6 +101,15 @@ QgsStatisticalSummaryDockWidget::QgsStatisticalSummaryDockWidget( QWidget *paren
101101
refreshStatisticsMenu();
102102
}
103103

104+
void QgsStatisticalSummaryDockWidget::fieldChanged()
105+
{
106+
if ( mFieldExpressionWidget->expression() != mExpression )
107+
{
108+
mExpression = mFieldExpressionWidget->expression();
109+
refreshStatistics();
110+
}
111+
}
112+
104113
void QgsStatisticalSummaryDockWidget::refreshStatistics()
105114
{
106115
if ( !mLayer || ( mFieldExpressionWidget->isExpression() && !mFieldExpressionWidget->isValidExpression() ) )

src/app/qgsstatisticalsummarydockwidget.h

+3
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ class APP_EXPORT QgsStatisticalSummaryDockWidget : public QgsDockWidget, private
5858
private slots:
5959

6060
void layerChanged( QgsMapLayer *layer );
61+
void fieldChanged();
6162
void statActionTriggered( bool checked );
6263
void layersRemoved( const QStringList &layers );
6364
void layerSelectionChanged();
@@ -92,6 +93,8 @@ class APP_EXPORT QgsStatisticalSummaryDockWidget : public QgsDockWidget, private
9293
QMenu *mStatisticsMenu = nullptr;
9394
DataType mFieldType;
9495
DataType mPreviousFieldType;
96+
97+
QString mExpression;
9598
};
9699

97100
#endif // QGSSTATISTICALSUMMARYDOCKWIDGET_H

0 commit comments

Comments
 (0)