Skip to content

Commit

Permalink
[app][bugfix] Update layer editable state when filter is changed
Browse files Browse the repository at this point in the history
Fixes #17507
  • Loading branch information
elpaso committed Nov 22, 2017
1 parent 2169c88 commit d775a0d
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
16 changes: 8 additions & 8 deletions src/app/qgisapp.cpp
Expand Up @@ -8940,6 +8940,7 @@ void QgisApp::layerSubsetString()
if ( qb->exec() && ( subsetBefore != qb->sql() ) && mLayerTreeView )
{
mLayerTreeView->refreshLayerSymbology( vlayer->id() );
activateDeactivateLayerRelatedActions( vlayer );
}
}

Expand Down Expand Up @@ -11089,14 +11090,13 @@ void QgisApp::layersWereAdded( const QList<QgsMapLayer *> &layers )
connect( vlayer, &QgsVectorLayer::labelingFontNotFound, this, &QgisApp::labelingFontNotFound );

QgsVectorDataProvider *vProvider = vlayer->dataProvider();
if ( vProvider && vProvider->capabilities() & QgsVectorDataProvider::EditingCapabilities )
{
connect( vlayer, &QgsVectorLayer::layerModified, this, &QgisApp::updateLayerModifiedActions );
connect( vlayer, &QgsVectorLayer::editingStarted, this, &QgisApp::layerEditStateChanged );
connect( vlayer, &QgsVectorLayer::editingStopped, this, &QgisApp::layerEditStateChanged );
connect( vlayer, &QgsVectorLayer::readOnlyChanged, this, &QgisApp::layerEditStateChanged );
}

// Do not check for layer editing capabilities because they may change
// (for example when subsetString is added/removed) and signals need to
// be in place in order to update the GUI
connect( vlayer, &QgsVectorLayer::layerModified, this, &QgisApp::updateLayerModifiedActions );
connect( vlayer, &QgsVectorLayer::editingStarted, this, &QgisApp::layerEditStateChanged );
connect( vlayer, &QgsVectorLayer::editingStopped, this, &QgisApp::layerEditStateChanged );
connect( vlayer, &QgsVectorLayer::readOnlyChanged, this, &QgisApp::layerEditStateChanged );
connect( vlayer, &QgsVectorLayer::raiseError, this, &QgisApp::onLayerError );

provider = vProvider;
Expand Down
8 changes: 7 additions & 1 deletion src/app/qgisapp.h
Expand Up @@ -689,7 +689,13 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
//! mark project dirty
void markDirty();

void layersWereAdded( const QList<QgsMapLayer *> & );
/**
* \brief layersWereAdded is triggered when layers were added
* This method loops through the list of \a layers and connect all
* application signals that need to listen to layer events.
* \param layers list of map layers that have been added
*/
void layersWereAdded( const QList<QgsMapLayer *> &layers );

/* layer will be removed - changed from removingLayer to removingLayers
in 1.8.
Expand Down
1 change: 1 addition & 0 deletions src/app/qgsapplayertreeviewmenuprovider.cpp
Expand Up @@ -226,6 +226,7 @@ QMenu *QgsAppLayerTreeViewMenuProvider::createContextMenu()
{
menu->addAction( toggleEditingAction );
toggleEditingAction->setChecked( vlayer->isEditable() );
toggleEditingAction->setEnabled( true );
}
if ( saveLayerEditsAction && vlayer->isModified() )
{
Expand Down

0 comments on commit d775a0d

Please sign in to comment.