0
0
mirror of https://github.com/keepassxreboot/keepassxc.git synced 2024-09-20 12:22:16 +02:00

Fix infinite save bug when saving fails

* Introduced in #6438, modified signal is not blocked at the Database level when emitting is blocked. This causes infinite saving to occur when Always Save After Every Change is enabled.
This commit is contained in:
Jonathan White 2021-06-06 11:58:52 -04:00
parent bd744d1e32
commit 484bc5dd01

View File

@ -875,7 +875,7 @@ bool Database::hasNonDataChanges() const
void Database::markAsModified()
{
m_modified = true;
if (!m_modifiedTimer.isActive()) {
if (modifiedSignalEnabled() && !m_modifiedTimer.isActive()) {
// Small time delay prevents numerous consecutive saves due to repeated signals
startModifiedTimer();
}
@ -942,11 +942,13 @@ bool Database::changeKdf(const QSharedPointer<Kdf>& kdf)
return true;
}
// Prevent warning about QTimer not allowed to be started/stopped from other thread
void Database::startModifiedTimer()
{
QMetaObject::invokeMethod(&m_modifiedTimer, "start", Q_ARG(int, 150));
}
// Prevent warning about QTimer not allowed to be started/stopped from other thread
void Database::stopModifiedTimer()
{
QMetaObject::invokeMethod(&m_modifiedTimer, "stop");