SessionManager fix - obtain all mainwindow QSplitters in "addEntry"

This commit is contained in:
2021-02-22 11:27:40 +03:00
parent 365568cad7
commit 45781dfc3e
4 changed files with 49 additions and 39 deletions

View File

@@ -42,6 +42,12 @@ void SessionManager::removeMainWidget(QWidget * e) {
}
void SessionManager::addEntry(const QString & name, QMainWindow * e) {
mwindows.push_back(QPair<QString, QMainWindow * >(name, e));
mw_splitters[e] = e->findChildren<QSplitter * >();
}
void SessionManager::save() {
if (file_.isEmpty()) {
qDebug() << "[SessionManager] filename is empty";
@@ -54,8 +60,8 @@ void SessionManager::save() {
sr.setValue(mwindows[i].first + " state", mwindows[i].second->saveState(), false);
sr.setValue(mwindows[i].first + " window state", (int)mwindows[i].second->windowState(), false);
sr.setValue(mwindows[i].first + " geometry " + QString::number((int)mwindows[i].second->windowState()), mwindows[i].second->saveGeometry(), false);
QList<QSplitter * > sp = mwindows[i].second->findChildren<QSplitter * >();
foreach (QSplitter * s, sp)
QList<QSplitter*> spl = mw_splitters[mwindows[i].second];
foreach (QSplitter * s, spl)
sr.setValue(mwindows[i].first + " splitter " + s->objectName(), s->saveState(), false);
}
for (int i = 0; i < widgets.size(); ++i) {
@@ -165,8 +171,8 @@ void SessionManager::load(bool onlyMainwindow) {
QByteArray ba = sr.getValue(mwindows[i].first + " state").toByteArray();
if (!ba.isEmpty())
mw->restoreState(ba);
QList<QSplitter * > sp = mw->findChildren<QSplitter * >();
foreach (QSplitter * s, sp) {
QList<QSplitter*> spl = mw_splitters[mw];
foreach (QSplitter * s, spl) {
ba = sr.getValue(mwindows[i].first + " splitter " + s->objectName()).toByteArray();
if (!ba.isEmpty())
s->restoreState(ba);
@@ -261,6 +267,7 @@ void SessionManager::clear(bool with_filename) {
bools.clear();
ints.clear();
floats.clear();
mw_splitters.clear();
if (with_filename) setFile("");
}