From: Manuel Nickschas Date: Mon, 14 Apr 2008 17:54:32 +0000 (+0000) Subject: Save mainwindow state without segfaulting occasionally... X-Git-Tag: 0.2.0-beta1~46 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=2a60e60bdfd1ab26cea1ae68d5a8cf3bfb223d70 Save mainwindow state without segfaulting occasionally... --- diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index d16916df..f01640ad 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -100,8 +100,7 @@ void MainWin::init() { Client::signalProxy()->attachSignal(this, SIGNAL(requestBacklog(BufferInfo, QVariant, QVariant))); - // let's hope here that nothing in disconnectedFromCore() needs user interaction/event loop... - connect(QApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(disconnectedFromCore())); + connect(QApplication::instance(), SIGNAL(aboutToQuit()), this, SLOT(saveLayout())); connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), this, SLOT(clientNetworkCreated(NetworkId))); connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), this, SLOT(clientNetworkRemoved(NetworkId))); @@ -425,6 +424,12 @@ void MainWin::loadLayout() { restoreState(s.value(QString("MainWinState-%1").arg(accountId)).toByteArray(), accountId); } +void MainWin::saveLayout() { + QtUiSettings s; + int accountId = Client::currentCoreAccount().toInt(); + if(accountId > 0) s.setValue(QString("MainWinState-%1").arg(accountId) , saveState(accountId)); +} + void MainWin::securedConnection() { // todo: make status bar entry qDebug() << "secured the connection"; @@ -434,9 +439,7 @@ void MainWin::securedConnection() { void MainWin::disconnectedFromCore() { // save core specific layout and remove bufferviews; - QtUiSettings s; - int accountId = Client::currentCoreAccount().toInt(); - s.setValue(QString("MainWinState-%1").arg(accountId) , saveState(accountId)); + saveLayout(); QVariant actionData; BufferViewDock *dock; foreach(QAction *action, ui.menuViews->actions()) { @@ -453,6 +456,7 @@ void MainWin::disconnectedFromCore() { dock->deleteLater(); } } + QtUiSettings s; restoreState(s.value("MainWinState").toByteArray()); setDisconnectedState(); } diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index 50dc496f..f572e1d5 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -93,6 +93,7 @@ class MainWin : public QMainWindow { void saveStatusBarStatus(bool enabled); void loadLayout(); + void saveLayout(); signals: void connectToCore(const QVariantMap &connInfo); diff --git a/version.inc b/version.inc index e10e7f5c..0978066d 100644 --- a/version.inc +++ b/version.inc @@ -5,7 +5,7 @@ quasselVersion = "0.2.0-beta1-pre"; quasselDate = "2008-04-14"; - quasselBuild = 742; + quasselBuild = 744; //! Minimum client build number the core needs clientBuildNeeded = 731;