diff --git a/src/providers/postgres/qgspostgresdataitems.cpp b/src/providers/postgres/qgspostgresdataitems.cpp index b1848c4d5ed..cd181e49f49 100644 --- a/src/providers/postgres/qgspostgresdataitems.cpp +++ b/src/providers/postgres/qgspostgresdataitems.cpp @@ -317,8 +317,18 @@ QList QgsPGLayerItem::actions( QWidget *parent ) connect( actionRenameLayer, &QAction::triggered, this, &QgsPGLayerItem::renameLayer ); lst.append( actionRenameLayer ); - QAction *actionDeleteLayer = new QAction( tr( "Delete %1" ).arg( typeName ), parent ); - connect( actionDeleteLayer, &QAction::triggered, this, &QgsPGLayerItem::deleteLayer ); + const QString deleteText = selectedItems().count() == 1 ? tr( "Delete %1" ).arg( typeName ) + : tr( "Delete Selected Tables" ); + QAction *actionDeleteLayer = new QAction( deleteText, parent ); + connect( actionDeleteLayer, &QAction::triggered, this, [ = ] + { + QList items = selectedItems(); + for ( QgsDataItem *item : items ) + { + if ( QgsPGLayerItem *pgLayerItem = qobject_cast< QgsPGLayerItem *>( item ) ) + pgLayerItem->deleteLayer(); + } + } ) ; lst.append( actionDeleteLayer ); if ( !mLayerProperty.isView ) diff --git a/src/providers/spatialite/qgsspatialitedataitems.cpp b/src/providers/spatialite/qgsspatialitedataitems.cpp index 18d333d58f6..2209548f5ba 100644 --- a/src/providers/spatialite/qgsspatialitedataitems.cpp +++ b/src/providers/spatialite/qgsspatialitedataitems.cpp @@ -45,8 +45,19 @@ QList QgsSLLayerItem::actions( QWidget *parent ) { QList lst; - QAction *actionDeleteLayer = new QAction( tr( "Delete Layer" ), parent ); - connect( actionDeleteLayer, &QAction::triggered, this, &QgsSLLayerItem::deleteLayer ); + const QString deleteText = selectedItems().count() == 1 ? tr( "Delete Layer '%1'…" ).arg( mName ) + : tr( "Delete Selected Layers" ); + QAction *actionDeleteLayer = new QAction( deleteText, parent ); + + connect( actionDeleteLayer, &QAction::triggered, this, [ = ] + { + QList items = selectedItems(); + for ( QgsDataItem *item : items ) + { + if ( QgsSLLayerItem *slLayerItem = qobject_cast< QgsSLLayerItem *>( item ) ) + slLayerItem->deleteLayer(); + } + } ) ; lst.append( actionDeleteLayer ); return lst;