diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 289affee6b7..20030a46ff3 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -502,14 +502,18 @@ static QList> documentationFiles(BaseQtVersion *v) static QStringList documentationFiles(const QList &vs, bool highestOnly = false) { - QSet includedFileNames; + // if highestOnly is true, register each file only once per major Qt version, even if + // multiple minor or patch releases of that major version are installed + QHash> includedFileNames; // major Qt version -> names QSet filePaths; const QList versions = highestOnly ? QtVersionManager::sortVersions(vs) : vs; for (BaseQtVersion *v : versions) { + const int majorVersion = v->qtVersion().majorVersion; + QSet &majorVersionFileNames = includedFileNames[majorVersion]; for (const std::pair &file : documentationFiles(v)) { - if (!highestOnly || !includedFileNames.contains(file.second)) { + if (!highestOnly || !majorVersionFileNames.contains(file.second)) { filePaths.insert(file.first + file.second); - includedFileNames.insert(file.second); + majorVersionFileNames.insert(file.second); } } }