Skip to content

Commit 5b5f16e

Browse files
committed
Merge pull request #1964 from mhugo/fix_querybuilder_joins2
Allow provider-level filtering (subset string) on layers with joined fields
2 parents 837c7ee + 4a52750 commit 5b5f16e

File tree

3 files changed

+11
-6
lines changed

3 files changed

+11
-6
lines changed

src/app/qgsapplayertreeviewmenuprovider.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu()
148148
menu->addAction( tr( "Save As..." ), QgisApp::instance(), SLOT( saveAsFile() ) );
149149
menu->addAction( tr( "Save As Layer Definition File..." ), QgisApp::instance(), SLOT( saveAsLayerDefinition() ) );
150150

151-
if ( !vlayer->isEditable() && vlayer->dataProvider()->supportsSubsetString() && vlayer->vectorJoins().isEmpty() )
151+
if ( !vlayer->isEditable() && vlayer->dataProvider()->supportsSubsetString() )
152152
menu->addAction( tr( "&Filter..." ), QgisApp::instance(), SLOT( layerSubsetString() ) );
153153

154154
menu->addAction( actions->actionShowFeatureCount( menu ) );

src/app/qgsvectorlayerproperties.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ void QgsVectorLayerProperties::toggleEditing()
306306
emit toggleEditing( layer );
307307

308308
pbnQueryBuilder->setEnabled( layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
309-
!layer->isEditable() && layer->vectorJoins().size() < 1 );
309+
!layer->isEditable() );
310310
if ( layer->isEditable() )
311311
{
312312
pbnQueryBuilder->setToolTip( tr( "Stop editing mode to enable this." ) );
@@ -392,7 +392,7 @@ void QgsVectorLayerProperties::syncToLayer( void )
392392
// a mechanism to check it must be implemented.
393393
txtSubsetSQL->setEnabled( false );
394394
pbnQueryBuilder->setEnabled( layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
395-
!layer->isEditable() && layer->vectorJoins().size() < 1 );
395+
!layer->isEditable() );
396396
if ( layer->isEditable() )
397397
{
398398
pbnQueryBuilder->setToolTip( tr( "Stop editing mode to enable this." ) );
@@ -1056,7 +1056,7 @@ void QgsVectorLayerProperties::on_mButtonAddJoin_clicked()
10561056
layer->addJoin( info );
10571057
addJoinToTreeWidget( info );
10581058
pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
1059-
!layer->isEditable() && layer->vectorJoins().size() < 1 );
1059+
!layer->isEditable() );
10601060
mFieldsPropertiesDialog->init();
10611061
}
10621062
}
@@ -1117,7 +1117,7 @@ void QgsVectorLayerProperties::on_mButtonEditJoin_clicked()
11171117
addJoinToTreeWidget( info, idx );
11181118

11191119
pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
1120-
!layer->isEditable() && layer->vectorJoins().size() < 1 );
1120+
!layer->isEditable() );
11211121
mFieldsPropertiesDialog->init();
11221122
}
11231123
}
@@ -1196,7 +1196,7 @@ void QgsVectorLayerProperties::on_mButtonRemoveJoin_clicked()
11961196
layer->removeJoin( currentJoinItem->data( 0, Qt::UserRole ).toString() );
11971197
mJoinTreeWidget->takeTopLevelItem( mJoinTreeWidget->indexOfTopLevelItem( currentJoinItem ) );
11981198
pbnQueryBuilder->setEnabled( layer && layer->dataProvider() && layer->dataProvider()->supportsSubsetString() &&
1199-
!layer->isEditable() && layer->vectorJoins().size() < 1 );
1199+
!layer->isEditable() );
12001200
mFieldsPropertiesDialog->init();
12011201
}
12021202

src/gui/qgsquerybuilder.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ void QgsQueryBuilder::populateFields()
7272
const QgsFields& fields = mLayer->pendingFields();
7373
for ( int idx = 0; idx < fields.count(); ++idx )
7474
{
75+
if ( fields.fieldOrigin(idx) != QgsFields::OriginProvider )
76+
{
77+
// only consider native fields
78+
continue;
79+
}
7580
QStandardItem *myItem = new QStandardItem( fields[idx].name() );
7681
myItem->setData( idx );
7782
myItem->setEditable( false );

0 commit comments

Comments
 (0)