SessionManager fix - obtain all mainwindow QSplitters in "addEntry"
This commit is contained in:
@@ -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("");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user