diff --git a/src/browser/BrowserOptionDialog.ui b/src/browser/BrowserOptionDialog.ui index 0e3e446f1..638c400aa 100755 --- a/src/browser/BrowserOptionDialog.ui +++ b/src/browser/BrowserOptionDialog.ui @@ -304,7 +304,7 @@ - Only the selected database has to be connected with a client. + All databases connected to the extension will return matching credentials. Searc&h in all opened databases for matching credentials diff --git a/src/browser/BrowserService.cpp b/src/browser/BrowserService.cpp index 990b53123..0f9fb7da1 100644 --- a/src/browser/BrowserService.cpp +++ b/src/browser/BrowserService.cpp @@ -605,6 +605,18 @@ BrowserService::searchEntries(const QSharedPointer& db, const QString& QList BrowserService::searchEntries(const QString& url, const StringPairList& keyList) { + // Check if database is connected with KeePassXC-Browser + auto databaseConnected = [&](const QSharedPointer& db) { + for (const StringPair& keyPair : keyList) { + QString key = + db->metadata()->customData()->value(QLatin1String(ASSOCIATE_KEY_PREFIX) + keyPair.first); + if (!key.isEmpty() && keyPair.second == key) { + return true; + } + } + return false; + }; + // Get the list of databases to search QList> databases; if (browserSettings()->searchInAllDatabases()) { @@ -612,19 +624,16 @@ QList BrowserService::searchEntries(const QString& url, const StringPair for (int i = 0; i < count; ++i) { if (auto* dbWidget = qobject_cast(m_dbTabWidget->widget(i))) { if (const auto& db = dbWidget->database()) { - // Check if database is connected with KeePassXC-Browser - for (const StringPair& keyPair : keyList) { - QString key = - db->metadata()->customData()->value(QLatin1String(ASSOCIATE_KEY_PREFIX) + keyPair.first); - if (!key.isEmpty() && keyPair.second == key) { - databases << db; - } + if (databaseConnected(db)) { + databases << db; } } } } } else if (const auto& db = getDatabase()) { - databases << db; + if (databaseConnected(db)) { + databases << db; + } } // Search entries matching the hostname