Skip to content

Commit 35907b6

Browse files
author
rugginoso
committed
Fixed a crash when a QgsGrassModel::VectorLayer contained into a multiple selection is deleted, renamed or copied.
git-svn-id: http://svn.osgeo.org/qgis/trunk/qgis@11203 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent b2d5840 commit 35907b6

File tree

1 file changed

+29
-4
lines changed

1 file changed

+29
-4
lines changed

src/plugins/grass/qgsgrassbrowser.cpp

+29-4
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,14 @@ void QgsGrassBrowser::copyMap()
216216
{
217217
QgsDebugMsg( "entered." );
218218

219-
QModelIndexList indexes = mTree->selectionModel()->selectedIndexes();
219+
// Filter VectorLayer type from selection
220+
QModelIndexList indexes;
221+
foreach(QModelIndex index, mTree->selectionModel()->selectedIndexes()){
222+
int type = mModel->itemType(index);
223+
if (type != QgsGrassModel::VectorLayer){
224+
indexes << index;
225+
}
226+
}
220227

221228
QList<QModelIndex>::const_iterator it = indexes.begin();
222229
for ( ; it != indexes.end(); ++it )
@@ -288,7 +295,14 @@ void QgsGrassBrowser::renameMap()
288295
{
289296
QgsDebugMsg( "entered." );
290297

291-
QModelIndexList indexes = mTree->selectionModel()->selectedIndexes();
298+
// Filter VectorLayer type from selection
299+
QModelIndexList indexes;
300+
foreach(QModelIndex index, mTree->selectionModel()->selectedIndexes()){
301+
int type = mModel->itemType(index);
302+
if (type != QgsGrassModel::VectorLayer){
303+
indexes << index;
304+
}
305+
}
292306

293307
QList<QModelIndex>::const_iterator it = indexes.begin();
294308
for ( ; it != indexes.end(); ++it )
@@ -352,10 +366,21 @@ void QgsGrassBrowser::deleteMap()
352366
{
353367
QgsDebugMsg( "entered." );
354368

355-
QModelIndexList indexes = mTree->selectionModel()->selectedIndexes();
369+
// Filter VectorLayer type from selection
370+
QModelIndexList indexes;
371+
foreach(QModelIndex index, mTree->selectionModel()->selectedIndexes()){
372+
int type = mModel->itemType(index);
373+
if (type != QgsGrassModel::VectorLayer){
374+
indexes << index;
375+
}
376+
}
356377

357-
if (!QMessageBox::question(this, tr("Question"), tr("Are you sure you want to delete the %1 selected layer(s)?").arg(indexes.size())))
378+
if (QMessageBox::question(this, tr("Question"),
379+
tr("Are you sure you want to delete the %1 selected layer(s)?").arg(indexes.size()),
380+
QMessageBox::Yes | QMessageBox::No) == QMessageBox::No)
381+
{
358382
return;
383+
}
359384

360385
QList<QModelIndex>::const_iterator it = indexes.begin();
361386
for ( ; it != indexes.end(); ++it )

0 commit comments

Comments
 (0)