diff --git a/src/singletons/WindowManager.cpp b/src/singletons/WindowManager.cpp index e90e04e02..092014811 100644 --- a/src/singletons/WindowManager.cpp +++ b/src/singletons/WindowManager.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include @@ -258,11 +259,7 @@ void WindowManager::initialize(Settings &settings, Paths &paths) // load file QString settingsPath = getPaths()->settingsDirectory + SETTINGS_FILENAME; - QFile file(settingsPath); - file.open(QIODevice::ReadOnly); - QByteArray data = file.readAll(); - QJsonDocument document = QJsonDocument::fromJson(data); - QJsonArray windows_arr = document.object().value("windows").toArray(); + QJsonArray windows_arr = this->loadWindowArray(settingsPath); // "deserialize" for (QJsonValue window_val : windows_arr) @@ -477,7 +474,7 @@ void WindowManager::save() // save file QString settingsPath = getPaths()->settingsDirectory + SETTINGS_FILENAME; - QFile file(settingsPath); + QSaveFile file(settingsPath); file.open(QIODevice::WriteOnly | QIODevice::Truncate); QJsonDocument::JsonFormat format = @@ -489,7 +486,7 @@ void WindowManager::save() ; file.write(document.toJson(format)); - file.flush(); + file.commit(); } void WindowManager::sendAlert() @@ -622,4 +619,14 @@ void WindowManager::incGeneration() this->generation_++; } +QJsonArray WindowManager::loadWindowArray(const QString &settingsPath) +{ + QFile file(settingsPath); + file.open(QIODevice::ReadOnly); + QByteArray data = file.readAll(); + QJsonDocument document = QJsonDocument::fromJson(data); + QJsonArray windows_arr = document.object().value("windows").toArray(); + return windows_arr; +} + } // namespace chatterino diff --git a/src/singletons/WindowManager.hpp b/src/singletons/WindowManager.hpp index 038eb41ab..dd9e7fb69 100644 --- a/src/singletons/WindowManager.hpp +++ b/src/singletons/WindowManager.hpp @@ -54,6 +54,7 @@ public: virtual void initialize(Settings &settings, Paths &paths) override; virtual void save() override; void closeAll(); + QJsonArray loadWindowArray(const QString &settingsPath); int getGeneration() const; void incGeneration();