aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/kristall.hpp2
-rw-r--r--src/main.cpp21
-rw-r--r--src/mainwindow.cpp7
-rw-r--r--src/mainwindow.hpp2
4 files changed, 26 insertions, 6 deletions
diff --git a/src/kristall.hpp b/src/kristall.hpp
index b692e75..8ae8cb2 100644
--- a/src/kristall.hpp
+++ b/src/kristall.hpp
@@ -152,6 +152,8 @@ namespace kristall
void setUiDensity(UIDensity density, bool previewing);
+ void saveWindowState();
+
extern QString default_font_family, default_font_family_fixed;
}
diff --git a/src/main.cpp b/src/main.cpp
index d54ae22..f969834 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -37,6 +37,7 @@ QString toFingerprintString(QSslCertificate const & certificate)
static QSettings * app_settings_ptr;
static QApplication * app;
static MainWindow * main_window = nullptr;
+static bool closing_state_saved = false;
#define SSTR(X) STR(X)
#define STR(X) #X
@@ -317,12 +318,8 @@ int main(int argc, char *argv[])
int exit_code = app.exec();
- app_settings.beginGroup("Window State");
- app_settings.setValue("geometry", w.saveGeometry());
- app_settings.setValue("state", w.saveState());
- app_settings.endGroup();
-
- kristall::saveSettings();
+ if (!closing_state_saved)
+ kristall::saveWindowState();
return exit_code;
}
@@ -561,3 +558,15 @@ void kristall::setUiDensity(UIDensity density, bool previewing)
assert(main_window != nullptr);
main_window->setUiDensity(density, previewing);
}
+
+void kristall::saveWindowState()
+{
+ closing_state_saved = true;
+
+ app_settings_ptr->beginGroup("Window State");
+ app_settings_ptr->setValue("geometry", main_window->saveGeometry());
+ app_settings_ptr->setValue("state", main_window->saveState());
+ app_settings_ptr->endGroup();
+
+ kristall::saveSettings();
+}
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 64f5fab..8594f7a 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -296,6 +296,13 @@ void MainWindow::mousePressEvent(QMouseEvent *event)
}
}
+void MainWindow::closeEvent(QCloseEvent *event)
+{
+ kristall::saveWindowState();
+
+ event->accept();
+}
+
void MainWindow::on_browser_tabs_currentChanged(int index)
{
if(index >= 0) {
diff --git a/src/mainwindow.hpp b/src/mainwindow.hpp
index a252daa..7113587 100644
--- a/src/mainwindow.hpp
+++ b/src/mainwindow.hpp
@@ -47,6 +47,8 @@ public:
void mousePressEvent(QMouseEvent *event) override;
+ void closeEvent(QCloseEvent *event) override;
+
private slots:
void on_browser_tabs_currentChanged(int index);