From ede13b2b77cc1260c950b267dfd6d2407d35ffc3 Mon Sep 17 00:00:00 2001 From: raspopov Date: Thu, 18 Dec 2025 20:02:14 +0300 Subject: [PATCH] Add full window state saving Saving and restoring of window sizes and states (normal and maximized) has been added, as well as the position of internal window elements, including toolbars. Fixes #69 --- omodsim/mainwindow.cpp | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/omodsim/mainwindow.cpp b/omodsim/mainwindow.cpp index 061c19a..b28fc05 100644 --- a/omodsim/mainwindow.cpp +++ b/omodsim/mainwindow.cpp @@ -1840,13 +1840,7 @@ void MainWindow::loadSettings() QSettings m(filepath, QSettings::IniFormat, this); - const auto geometry = m.value("WindowGeometry", this->geometry()).toRect(); - setGeometry(geometry); - - const bool isMaximized = m.value("WindowMaximized").toBool(); - if(isMaximized) { - showMaximized(); - } + restoreGeometry(m.value("WindowGeometry").toByteArray()); const auto viewMode = (QMdiArea::ViewMode)qBound(0, m.value("ViewMode", QMdiArea::SubWindowView).toInt(), 1); ui->mdiArea->setViewMode(viewMode); @@ -1901,6 +1895,8 @@ void MainWindow::loadSettings() } } } + + restoreState(m.value("WindowState").toByteArray()); } /// @@ -1934,8 +1930,8 @@ void MainWindow::saveSettings() m.clear(); m.sync(); - m.setValue("WindowMaximized", isMaximized()); - m.setValue("WindowGeometry", isMaximized()? normalGeometry() : geometry()); + m.setValue("WindowGeometry", saveGeometry()); + m.setValue("WindowState", saveState()); const auto frm = currentMdiChild(); if(frm) m.setValue("ActiveWindow", frm->windowTitle());