@@ -179,21 +179,32 @@ void TestQgsAttributeTable::testFieldCalculationArea()
179
179
void TestQgsAttributeTable::testNoGeom ()
180
180
{
181
181
// test that by default the attribute table DOESN'T fetch geometries (because performance)
182
- std::unique_ptr < QgsVectorLayer> tempLayer ( new QgsVectorLayer ( QString ( " LineString?crs=epsg:3111&field=pk:int&field=col1:double" ), QString ( " vl" ), QString ( " memory" ) ) );
182
+ QScopedPointer < QgsVectorLayer> tempLayer ( new QgsVectorLayer ( QString ( " LineString?crs=epsg:3111&field=pk:int&field=col1:double" ), QString ( " vl" ), QString ( " memory" ) ) );
183
183
QVERIFY ( tempLayer->isValid () );
184
184
185
- QSettings ().setValue ( QString ( " /qgis/attributeTableBehavior " ), QgsAttributeTableFilterModel::ShowAll );
186
- std::unique_ptr < QgsAttributeTableDialog > dlg ( new QgsAttributeTableDialog ( tempLayer.get () ) );
185
+ QSettings ().setValue ( QString ( " /qgis/attributeTableBehaviour " ), QgsAttributeTableFilterModel::ShowAll );
186
+ QScopedPointer < QgsAttributeTableDialog > dlg ( new QgsAttributeTableDialog ( tempLayer.data () ) );
187
187
188
188
QVERIFY ( !dlg->mMainView ->masterModel ()->layerCache ()->cacheGeometry () );
189
189
QVERIFY ( dlg->mMainView ->masterModel ()->request ().flags () & QgsFeatureRequest::NoGeometry );
190
190
191
191
// but if we are requesting only visible features, then geometry must be fetched...
192
192
193
- QSettings ().setValue ( QString ( " /qgis/attributeTableBehavior " ), QgsAttributeTableFilterModel::ShowVisible );
194
- dlg.reset ( new QgsAttributeTableDialog ( tempLayer.get () ) );
193
+ QSettings ().setValue ( QString ( " /qgis/attributeTableBehaviour " ), QgsAttributeTableFilterModel::ShowVisible );
194
+ dlg.reset ( new QgsAttributeTableDialog ( tempLayer.data () ) );
195
195
QVERIFY ( dlg->mMainView ->masterModel ()->layerCache ()->cacheGeometry () );
196
196
QVERIFY ( !( dlg->mMainView ->masterModel ()->request ().flags () & QgsFeatureRequest::NoGeometry ) );
197
+
198
+ // try changing existing dialog to no geometry mode
199
+ dlg->filterShowAll ();
200
+ QVERIFY ( !dlg->mMainView ->masterModel ()->layerCache ()->cacheGeometry () );
201
+ QVERIFY ( dlg->mMainView ->masterModel ()->request ().flags () & QgsFeatureRequest::NoGeometry );
202
+
203
+ // and back to a geometry mode
204
+ dlg->filterVisible ();
205
+ QVERIFY ( dlg->mMainView ->masterModel ()->layerCache ()->cacheGeometry () );
206
+ QVERIFY ( !( dlg->mMainView ->masterModel ()->request ().flags () & QgsFeatureRequest::NoGeometry ) );
207
+
197
208
}
198
209
199
210
QTEST_MAIN ( TestQgsAttributeTable )
0 commit comments