From 083e4c7338094e79c798793b138c16b4dda1c737 Mon Sep 17 00:00:00 2001 From: Nathan Woodrow Date: Wed, 22 Feb 2012 09:53:11 +1000 Subject: [PATCH] Set delete feature dialog parent. Fixes #5062 --- src/app/qgisapp.cpp | 19 ++++++++++++------- src/app/qgisapp.h | 2 +- src/app/qgsattributetabledialog.cpp | 2 +- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index 8ef74a71fca..688801c5b11 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -3512,16 +3512,21 @@ void QgisApp::layerProperties() showLayerProperties( activeLayer() ); } -void QgisApp::deleteSelected( QgsMapLayer *layer ) +void QgisApp::deleteSelected( QgsMapLayer *layer, QWidget* parent ) { if ( !layer ) { layer = mMapLegend->currentLayer(); } + if ( !parent ) + { + parent = this; + } + if ( !layer ) { - QMessageBox::information( this, + QMessageBox::information( parent, tr( "No Layer Selected" ), tr( "To delete features, you must select a vector layer in the legend" ) ); return; @@ -3530,7 +3535,7 @@ void QgisApp::deleteSelected( QgsMapLayer *layer ) QgsVectorLayer* vlayer = qobject_cast( layer ); if ( !vlayer ) { - QMessageBox::information( this, + QMessageBox::information( parent, tr( "No Vector Layer Selected" ), tr( "Deleting features only works on vector layers" ) ); return; @@ -3538,21 +3543,21 @@ void QgisApp::deleteSelected( QgsMapLayer *layer ) if ( !( vlayer->dataProvider()->capabilities() & QgsVectorDataProvider::DeleteFeatures ) ) { - QMessageBox::information( this, tr( "Provider does not support deletion" ), + QMessageBox::information( parent, tr( "Provider does not support deletion" ), tr( "Data provider does not support deleting features" ) ); return; } if ( !vlayer->isEditable() ) { - QMessageBox::information( this, tr( "Layer not editable" ), + QMessageBox::information( parent, tr( "Layer not editable" ), tr( "The current layer is not editable. Choose 'Start editing' in the digitizing toolbar." ) ); return; } //display a warning int numberOfDeletedFeatures = vlayer->selectedFeaturesIds().size(); - if ( QMessageBox::warning( this, tr( "Delete features" ), tr( "Delete %n feature(s)?", "number of features to delete", numberOfDeletedFeatures ), QMessageBox::Ok, QMessageBox::Cancel ) == QMessageBox::Cancel ) + if ( QMessageBox::warning( parent, tr( "Delete features" ), tr( "Delete %n feature(s)?", "number of features to delete", numberOfDeletedFeatures ), QMessageBox::Ok, QMessageBox::Cancel ) == QMessageBox::Cancel ) { return; } @@ -3560,7 +3565,7 @@ void QgisApp::deleteSelected( QgsMapLayer *layer ) vlayer->beginEditCommand( tr( "Features deleted" ) ); if ( !vlayer->deleteSelectedFeatures() ) { - QMessageBox::information( this, tr( "Problem deleting features" ), + QMessageBox::information( parent, tr( "Problem deleting features" ), tr( "A problem occured during deletion of features" ) ); } diff --git a/src/app/qgisapp.h b/src/app/qgisapp.h index 6b123eea6b7..f0b43e9100c 100644 --- a/src/app/qgisapp.h +++ b/src/app/qgisapp.h @@ -418,7 +418,7 @@ class QgisApp : public QMainWindow, private Ui::MainWindow void loadOGRSublayers( QString layertype, QString uri, QStringList list ); /**Deletes the selected attributes for the currently selected vector layer*/ - void deleteSelected( QgsMapLayer *layer = 0 ); + void deleteSelected( QgsMapLayer *layer = 0, QWidget* parent = 0 ); //! project was written void writeProject( QDomDocument & ); diff --git a/src/app/qgsattributetabledialog.cpp b/src/app/qgsattributetabledialog.cpp index 253ebf053af..f726a5ecc78 100644 --- a/src/app/qgsattributetabledialog.cpp +++ b/src/app/qgsattributetabledialog.cpp @@ -246,7 +246,7 @@ void QgsAttributeTableDialog::on_mRemoveSelectionButton_clicked() void QgsAttributeTableDialog::on_mDeleteSelectedButton_clicked() { - QgisApp::instance()->deleteSelected( mLayer ); + QgisApp::instance()->deleteSelected( mLayer, this ); } void QgsAttributeTableDialog::on_cbxShowSelectedOnly_toggled( bool theFlag )