@@ -832,9 +832,9 @@ Settings MainWindow::getCppcheckSettings()
832832 tryLoadLibrary (&result.library , filename);
833833 }
834834
835- const QStringList suppressions = mProjectFile ->getSuppressions ();
836- foreach (QString suppression, suppressions) {
837- result.nomsg .addSuppressionLine (suppression. toStdString () );
835+ const QList<Suppressions::Suppression> & suppressions = mProjectFile ->getSuppressions ();
836+ foreach (const Suppressions::Suppression & suppression, suppressions) {
837+ result.nomsg .addSuppression (suppression);
838838 }
839839
840840 // Only check the given -D configuration
@@ -1729,13 +1729,26 @@ void MainWindow::tagged()
17291729
17301730void MainWindow::suppressIds (QStringList ids)
17311731{
1732- if (mProjectFile ) {
1733- QStringList suppressions = mProjectFile ->getSuppressions ();
1734- foreach (QString s, ids) {
1735- if (!suppressions.contains (s))
1736- suppressions << s;
1732+ if (!mProjectFile )
1733+ return ;
1734+ ids.removeDuplicates ();
1735+
1736+ QList<Suppressions::Suppression> suppressions = mProjectFile ->getSuppressions ();
1737+ foreach (QString id, ids) {
1738+ // Remove all matching suppressions
1739+ std::string id2 = id.toStdString ();
1740+ for (int i = 0 ; i < suppressions.size ();) {
1741+ if (suppressions[i].errorId == id2)
1742+ suppressions.removeAt (i);
1743+ else
1744+ ++i;
17371745 }
1738- mProjectFile ->setSuppressions (suppressions);
1739- mProjectFile ->write ();
1746+
1747+ Suppressions::Suppression newSuppression;
1748+ newSuppression.errorId = id2;
1749+ suppressions << newSuppression;
17401750 }
1751+
1752+ mProjectFile ->setSuppressions (suppressions);
1753+ mProjectFile ->write ();
17411754}
0 commit comments