diff --git a/src/core/Resources.cpp b/src/core/Resources.cpp index e562ab0f69..86f9c4d3e7 100644 --- a/src/core/Resources.cpp +++ b/src/core/Resources.cpp @@ -50,7 +50,7 @@ Resources::Resources() { const QString appDirPath = QCoreApplication::applicationDirPath(); #if defined(Q_OS_UNIX) && !(defined(Q_OS_MACOS) && defined(WITH_APP_BUNDLE)) - trySetResourceDir(KEEPASSX_DATA_DIR) || trySetResourceDir(QString("%1/../%2").arg(appDirPath, KEEPASSX_DATA_DIR)) + trySetResourceDir(QString("%1/../%2").arg(appDirPath, KEEPASSX_DATA_DIR)) || trySetResourceDir(QString("%1/%2").arg(KEEPASSX_PREFIX_DIR, KEEPASSX_DATA_DIR)); #elif defined(Q_OS_MACOS) && defined(WITH_APP_BUNDLE) trySetResourceDir(appDirPath + QStringLiteral("/../Resources")); diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp index 5eca3b6e8e..e25e343947 100644 --- a/src/gui/DatabaseWidget.cpp +++ b/src/gui/DatabaseWidget.cpp @@ -2022,10 +2022,18 @@ bool DatabaseWidget::focusNextPrevChild(bool next) bool DatabaseWidget::lock() { - if (isLocked() || m_attemptingLock) { + if (m_attemptingLock) { return isLocked(); } + if (isLocked()) { + if (m_databaseOpenWidget && m_databaseOpenWidget->unlockingDatabase()) { + QMetaObject::invokeMethod(m_databaseOpenWidget, "reject", Qt::DirectConnection); + } else { + return true; + } + } + // ignore when reloading if (m_reloading) { return false; diff --git a/tests/TestTools.cpp b/tests/TestTools.cpp index b409b13564..1e82c915fc 100644 --- a/tests/TestTools.cpp +++ b/tests/TestTools.cpp @@ -18,9 +18,11 @@ #include "TestTools.h" #include "core/Clock.h" +#include "core/Resources.h" #include "core/Tools.h" #include "mock/MockClock.h" +#include #include #include #include @@ -479,3 +481,11 @@ void TestTools::testEscapeAccelerators() QCOMPARE(Tools::escapeAccelerators("Accel&&erator"), "Accel&&&&erator"); QCOMPARE(Tools::escapeAccelerators("Some & text"), "Some && text"); } + +void TestTools::testResourcesInit() +{ + auto* res = Resources::instance(); + QVERIFY(res != nullptr); + QString dataPath = res->dataPath(""); + QVERIFY(dataPath.isEmpty() || QDir::isAbsolutePath(dataPath)); +} diff --git a/tests/TestTools.h b/tests/TestTools.h index a540fd4999..89dd465076 100644 --- a/tests/TestTools.h +++ b/tests/TestTools.h @@ -46,6 +46,7 @@ private slots: void testCleanUsername(); void testCleanUsername_data(); void testEscapeAccelerators(); + void testResourcesInit(); }; #endif // KEEPASSX_TESTTOOLS_H