Skip to content

Commit 42104d7

Browse files
committedNov 1, 2012
show filled attribute table again (partly reverts 779e166)
1 parent 0dc01f5 commit 42104d7

File tree

3 files changed

+61
-56
lines changed

3 files changed

+61
-56
lines changed
 

‎src/app/qgsmaptoolidentify.cpp

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ bool QgsMapToolIdentify::identifyLayer( QgsMapLayer *layer, int x, int y )
194194

195195
bool QgsMapToolIdentify::identifyVectorLayer( QgsVectorLayer *layer, int x, int y )
196196
{
197-
if ( !layer || !layer->rendererV2() )
197+
if ( !layer )
198198
return false;
199199

200200
if ( layer->hasScaleBasedVisibility() &&
@@ -205,8 +205,6 @@ bool QgsMapToolIdentify::identifyVectorLayer( QgsVectorLayer *layer, int x, int
205205
return false;
206206
}
207207

208-
QgsFeatureRendererV2* renderer = layer->rendererV2();
209-
210208
QMap< QString, QString > attributes, derivedAttributes;
211209

212210
QgsPoint point = mCanvas->getCoordinateTransform()->toMapCoordinates( x, y );
@@ -263,18 +261,22 @@ bool QgsMapToolIdentify::identifyVectorLayer( QgsVectorLayer *layer, int x, int
263261
}
264262
QgsFeatureList::iterator f_it = featureList.begin();
265263

266-
if ( renderer->capabilities() & QgsFeatureRendererV2::ScaleDependent )
264+
bool filter = false;
265+
266+
QgsFeatureRendererV2* renderer = layer->rendererV2();
267+
if ( renderer && renderer->capabilities() & QgsFeatureRendererV2::ScaleDependent )
267268
{
268269
// setup scale for scale dependent visibility (rule based)
269270
renderer->startRender( *( mCanvas->mapRenderer()->rendererContext() ), layer );
271+
filter = renderer->capabilities() & QgsFeatureRendererV2::Filter;
270272
}
271-
bool filter = renderer->capabilities() & QgsFeatureRendererV2::Filter;
272273

273274
for ( ; f_it != featureList.end(); ++f_it )
274275
{
275276
QgsFeatureId fid = f_it->id();
276277

277-
if ( filter && !renderer->willRenderFeature( *f_it ) ) continue;
278+
if ( filter && !renderer->willRenderFeature( *f_it ) )
279+
continue;
278280

279281
featureCount++;
280282

@@ -328,7 +330,7 @@ bool QgsMapToolIdentify::identifyVectorLayer( QgsVectorLayer *layer, int x, int
328330
results()->addFeature( layer, *f_it, derivedAttributes );
329331
}
330332

331-
if ( renderer->capabilities() & QgsFeatureRendererV2::ScaleDependent )
333+
if ( renderer && renderer->capabilities() & QgsFeatureRendererV2::ScaleDependent )
332334
{
333335
renderer->stopRender( *( mCanvas->mapRenderer()->rendererContext() ) );
334336
}

‎src/gui/attributetable/qgsattributetablemodel.cpp

Lines changed: 50 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -285,42 +285,44 @@ void QgsAttributeTableModel::loadLayer()
285285
}
286286
else
287287
{
288+
bool filter = false;
288289
QgsRectangle rect;
290+
QgsAttributeList attributeList;
291+
QgsRenderContext renderContext;
292+
QgsFeatureRendererV2* renderer = mLayer->rendererV2();
289293
if ( behaviour == 2 )
290294
{
291295
// current canvas only
292296
rect = mCurrentExtent;
293-
}
294297

295-
QgsFeatureRendererV2* renderer = mLayer->rendererV2();
296-
if ( !renderer )
297-
{
298-
QgsDebugMsg( "Cannot get renderer" );
299-
}
300-
else if ( mLayer->hasScaleBasedVisibility() &&
301-
( mLayer->minimumScale() > mCanvas->mapRenderer()->scale() ||
302-
mLayer->maximumScale() <= mCanvas->mapRenderer()->scale() ) )
303-
{
304-
QgsDebugMsg( "Out of scale limits" );
305-
}
306-
else
307-
{
308-
QgsRenderContext renderContext;
309-
if ( renderer->capabilities() & QgsFeatureRendererV2::ScaleDependent )
298+
if ( !renderer )
310299
{
311-
// setup scale
312-
// mapRenderer()->renderContext()->scale is not automaticaly updated when
313-
// render extent changes (because it's scale is used to identify if changed
314-
// since last render) -> use local context
315-
renderContext.setExtent( mCanvas->mapRenderer()->rendererContext()->extent() );
316-
renderContext.setMapToPixel( mCanvas->mapRenderer()->rendererContext()->mapToPixel() );
317-
renderContext.setRendererScale( mCanvas->mapRenderer()->scale() );
318-
renderer->startRender( renderContext, mLayer );
300+
QgsDebugMsg( "Cannot get renderer" );
319301
}
320302

321-
bool filter = renderer->capabilities() & QgsFeatureRendererV2::Filter;
303+
if ( mLayer->hasScaleBasedVisibility() &&
304+
( mLayer->minimumScale() > mCanvas->mapRenderer()->scale() ||
305+
mLayer->maximumScale() <= mCanvas->mapRenderer()->scale() ) )
306+
{
307+
QgsDebugMsg( "Out of scale limits" );
308+
}
309+
else
310+
{
311+
if ( renderer && renderer->capabilities() & QgsFeatureRendererV2::ScaleDependent )
312+
{
313+
// setup scale
314+
// mapRenderer()->renderContext()->scale is not automaticaly updated when
315+
// render extent changes (because it's scale is used to identify if changed
316+
// since last render) -> use local context
317+
renderContext.setExtent( mCanvas->mapRenderer()->rendererContext()->extent() );
318+
renderContext.setMapToPixel( mCanvas->mapRenderer()->rendererContext()->mapToPixel() );
319+
renderContext.setRendererScale( mCanvas->mapRenderer()->scale() );
320+
renderer->startRender( renderContext, mLayer );
321+
}
322+
323+
filter = renderer && renderer->capabilities() & QgsFeatureRendererV2::Filter;
324+
}
322325

323-
QgsAttributeList attributeList = QgsAttributeList();
324326
if ( filter )
325327
{
326328
QList<QString> attributeNameList = renderer->usedAttributes();
@@ -329,31 +331,34 @@ void QgsAttributeTableModel::loadLayer()
329331
attributeList.append( mLayer->fieldNameIndex( attributeName ) );
330332
}
331333
}
332-
mLayer->select( attributeList, rect, false );
333-
334-
QgsFeature f;
335-
for ( i = 0; mLayer->nextFeature( f ); ++i )
336-
{
337-
if ( !filter || renderer->willRenderFeature( f ) )
338-
{
339-
featureAdded( f.id() );
340-
}
334+
}
341335

342-
if ( t.elapsed() > 5000 )
343-
{
344-
bool cancel = false;
345-
emit progress( i, cancel );
346-
if ( cancel )
347-
break;
336+
mLayer->select( attributeList, rect, false );
348337

349-
t.restart();
350-
}
338+
QgsFeature f;
339+
for ( i = 0; mLayer->nextFeature( f ); ++i )
340+
{
341+
if ( !filter || renderer->willRenderFeature( f ) )
342+
{
343+
featureAdded( f.id() );
351344
}
352-
if ( renderer->capabilities() & QgsFeatureRendererV2::ScaleDependent )
345+
346+
if ( t.elapsed() > 5000 )
353347
{
354-
renderer->stopRender( renderContext );
348+
bool cancel = false;
349+
emit progress( i, cancel );
350+
if ( cancel )
351+
break;
352+
353+
t.restart();
355354
}
356355
}
356+
357+
if ( renderer && renderer->capabilities() & QgsFeatureRendererV2::ScaleDependent )
358+
{
359+
renderer->stopRender( renderContext );
360+
}
361+
357362
emit finished();
358363
}
359364

‎src/providers/postgres/qgspostgresprovider.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1230,8 +1230,7 @@ bool QgsPostgresProvider::hasSufficientPermsAndCapabilities()
12301230
"has_table_privilege(%1,'DELETE'),"
12311231
"has_any_column_privilege(%1,'UPDATE'),"
12321232
"%2"
1233-
"has_table_privilege(%1,'INSERT'),"
1234-
"current_schema()" )
1233+
"has_table_privilege(%1,'INSERT')" )
12351234
.arg( quotedValue( mQuery ) )
12361235
.arg( mGeometryColumn.isNull()
12371236
? QString( "'f'," )
@@ -1246,8 +1245,7 @@ bool QgsPostgresProvider::hasSufficientPermsAndCapabilities()
12461245
"has_table_privilege(%1,'DELETE'),"
12471246
"has_table_privilege(%1,'UPDATE'),"
12481247
"has_table_privilege(%1,'UPDATE'),"
1249-
"has_table_privilege(%1,'INSERT'),"
1250-
"current_schema()" )
1248+
"has_table_privilege(%1,'INSERT')" )
12511249
.arg( quotedValue( mQuery ) );
12521250
}
12531251

0 commit comments

Comments
 (0)
Please sign in to comment.