Skip to content

Commit b57ff40

Browse files
committed
[GRASS] do not duplicate modules in list view, fixes #4975
1 parent 695689b commit b57ff40

File tree

1 file changed

+24
-14
lines changed

1 file changed

+24
-14
lines changed

src/plugins/grass/qgsgrasstools.cpp

+24-14
Original file line numberDiff line numberDiff line change
@@ -500,22 +500,32 @@ void QgsGrassTools::addModules( QStandardItem *parent, QDomElement &element, QSt
500500
item->setData( pixmap, Qt::DecorationRole );
501501
item->setCheckable( false );
502502
item->setEditable( false );
503-
QStandardItem * listItem = item->clone();
504-
listItem->setText( name + "\n" + description.label );
505-
506503
appendItem( treeModel, parent, item );
507504

508-
// setData in the delegate with a variantised QgsDetailedItemData
509-
QgsDetailedItemData myData;
510-
myData.setTitle( name );
511-
myData.setDetail( label );
512-
myData.setIcon( pixmap );
513-
myData.setCheckable( false );
514-
myData.setRenderAsWidget( false );
515-
QVariant myVariant = qVariantFromValue( myData );
516-
listItem->setData( myVariant, Qt::UserRole );
517-
518-
modulesListModel->appendRow( listItem );
505+
bool exists = false;
506+
for ( int i = 0; i < modulesListModel->rowCount(); i++ )
507+
{
508+
if ( modulesListModel->item( i )->data( Qt::UserRole + Name ).toString() == name )
509+
{
510+
exists = true;
511+
break;
512+
}
513+
}
514+
if ( !exists )
515+
{
516+
QStandardItem * listItem = item->clone();
517+
listItem->setText( name + "\n" + description.label );
518+
// setData in the delegate with a variantised QgsDetailedItemData
519+
QgsDetailedItemData myData;
520+
myData.setTitle( name );
521+
myData.setDetail( label );
522+
myData.setIcon( pixmap );
523+
myData.setCheckable( false );
524+
myData.setRenderAsWidget( false );
525+
QVariant myVariant = qVariantFromValue( myData );
526+
listItem->setData( myVariant, Qt::UserRole );
527+
modulesListModel->appendRow( listItem );
528+
}
519529
}
520530
}
521531
}

0 commit comments

Comments
 (0)