diff --git a/src/core/Database.cpp b/src/core/Database.cpp index ccd0ffb21..11ca6ea35 100644 --- a/src/core/Database.cpp +++ b/src/core/Database.cpp @@ -431,7 +431,7 @@ void Database::releaseData() setEmitModified(false); m_modified = false; - m_modifiedTimer.stop(); + stopModifiedTimer(); s_uuidMap.remove(m_uuid); m_uuid = QUuid(); @@ -842,7 +842,7 @@ void Database::emptyRecycleBin() void Database::setEmitModified(bool value) { if (m_emitModified && !value) { - m_modifiedTimer.stop(); + stopModifiedTimer(); } m_emitModified = value; @@ -863,7 +863,7 @@ void Database::markAsModified() m_modified = true; if (m_emitModified && !m_modifiedTimer.isActive()) { // Small time delay prevents numerous consecutive saves due to repeated signals - m_modifiedTimer.start(150); + startModifiedTimer(); } } @@ -871,7 +871,7 @@ void Database::markAsClean() { bool emitSignal = m_modified; m_modified = false; - m_modifiedTimer.stop(); + stopModifiedTimer(); m_hasNonDataChange = false; if (emitSignal) { emit databaseSaved(); @@ -927,3 +927,13 @@ bool Database::changeKdf(const QSharedPointer& kdf) return true; } + +void Database::startModifiedTimer() +{ + QMetaObject::invokeMethod(&m_modifiedTimer, "start", Q_ARG(int, 150)); +} + +void Database::stopModifiedTimer() +{ + QMetaObject::invokeMethod(&m_modifiedTimer, "stop"); +} diff --git a/src/core/Database.h b/src/core/Database.h index 88a096473..fa5c145cb 100644 --- a/src/core/Database.h +++ b/src/core/Database.h @@ -202,6 +202,8 @@ private: bool backupDatabase(const QString& filePath); bool restoreDatabase(const QString& filePath); bool performSave(const QString& filePath, QString* error, bool atomic, bool backup); + void startModifiedTimer(); + void stopModifiedTimer(); QPointer const m_metadata; DatabaseData m_data;