Skip to content

Commit 73528cd

Browse files
authoredSep 14, 2018
avoid detach when looping on fields and convert some Q_FOREACH (#7905)
* avoid detach when looping on fields and convert some Q_FOREACH * fields already exist
1 parent 8b07b4e commit 73528cd

File tree

8 files changed

+17
-9
lines changed

8 files changed

+17
-9
lines changed
 

‎src/app/qgsattributetabledialog.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,8 @@ QgsAttributeTableDialog::QgsAttributeTableDialog( QgsVectorLayer *layer, QgsAttr
108108
connect( mActionExpressionSelect, &QAction::triggered, this, &QgsAttributeTableDialog::mActionExpressionSelect_triggered );
109109
connect( mMainView, &QgsDualView::showContextMenuExternally, this, &QgsAttributeTableDialog::showContextMenu );
110110

111-
Q_FOREACH ( const QgsField &field, mLayer->fields() )
111+
const QgsFields fields = mLayer->fields();
112+
for ( const QgsField &field : fields )
112113
{
113114
mVisibleFields.append( field.name() );
114115
}

‎src/core/qgsjsonutils.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,8 @@ QString QgsJsonExporter::exportFeature( const QgsFeature &feature, const QVarian
175175
QgsFeatureIterator it = childLayer->getFeatures( req );
176176
QVector<QVariant> attributeWidgetCaches;
177177
int fieldIndex = 0;
178-
for ( const auto &field : childLayer->fields() )
178+
const QgsFields fields = childLayer->fields();
179+
for ( const QgsField &field : fields )
179180
{
180181
QgsEditorWidgetSetup setup = field.editorWidgetSetup();
181182
QgsFieldFormatter *fieldFormatter = QgsApplication::fieldFormatterRegistry()->fieldFormatter( setup.type() );

‎src/core/qgsvectorlayereditbuffer.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,8 @@ bool QgsVectorLayerEditBuffer::addAttribute( const QgsField &field )
256256
if ( field.name().isEmpty() )
257257
return false;
258258

259-
Q_FOREACH ( const QgsField &updatedField, L->fields() )
259+
const QgsFields fields = L->fields();
260+
for ( const QgsField &updatedField : fields )
260261
{
261262
if ( updatedField.name() == field.name() )
262263
return false;
@@ -303,7 +304,8 @@ bool QgsVectorLayerEditBuffer::renameAttribute( int index, const QString &newNam
303304
if ( index < 0 || index >= L->fields().count() )
304305
return false;
305306

306-
Q_FOREACH ( const QgsField &updatedField, L->fields() )
307+
const QgsFields fields = L->fields();
308+
for ( const QgsField &updatedField : fields )
307309
{
308310
if ( updatedField.name() == newName )
309311
return false;

‎src/gui/qgsnewauxiliarylayerdialog.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ QgsNewAuxiliaryLayerDialog::QgsNewAuxiliaryLayerDialog( QgsVectorLayer *layer, Q
2727
{
2828
setupUi( this );
2929

30-
for ( const QgsField &field : mLayer->fields() )
30+
const QgsFields fields = mLayer->fields();
31+
for ( const QgsField &field : fields )
3132
comboBox->addItem( field.name() );
3233
}
3334

‎src/gui/qgspropertyoverridebutton.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,8 @@ void QgsPropertyOverrideButton::updateFieldLists()
155155
if ( mVectorLayer )
156156
{
157157
// store just a list of fields of unknown type or those that match the expected type
158-
Q_FOREACH ( const QgsField &f, mVectorLayer->fields() )
158+
const QgsFields fields = mVectorLayer->fields();
159+
for ( const QgsField &f : fields )
159160
{
160161
bool fieldMatch = false;
161162
QString fieldType;

‎src/gui/symbology/qgsvectorfieldsymbollayerwidget.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ QgsVectorFieldSymbolLayerWidget::QgsVectorFieldSymbolLayerWidget( QgsVectorLayer
3939
mXAttributeComboBox->addItem( QString() );
4040
mYAttributeComboBox->addItem( QString() );
4141
int i = 0;
42-
Q_FOREACH ( const QgsField &f, vectorLayer()->fields() )
42+
const QgsFields fields = vectorLayer()->fields();
43+
for ( const QgsField &f : fields )
4344
{
4445
QString fieldName = f.name();
4546
mXAttributeComboBox->addItem( vectorLayer()->fields().iconForField( i ), fieldName );

‎src/providers/virtual/qgsvirtuallayersourceselect.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,8 @@ void QgsVirtualLayerSourceSelect::updateLayersList()
300300
{
301301
apis->add( l->name() );
302302
QgsVectorLayer *vl = static_cast<QgsVectorLayer *>( l );
303-
Q_FOREACH ( const QgsField &f, vl->fields().toList() )
303+
const QgsFields fields = vl->fields();
304+
for ( const QgsField &f : fields )
304305
{
305306
apis->add( f.name() );
306307
}

‎src/server/services/wms/qgswmsrenderer.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1459,7 +1459,7 @@ namespace QgsWms
14591459
mAccessControl->filterFeatures( layer, fReq );
14601460

14611461
QStringList attributes;
1462-
for ( const QgsField &field : layer->fields().toList() )
1462+
for ( const QgsField &field : fields )
14631463
{
14641464
attributes.append( field.name() );
14651465
}

0 commit comments

Comments
 (0)
Please sign in to comment.