From: Manuel Nickschas Date: Tue, 26 May 2009 08:25:35 +0000 (+0200) Subject: More windowstate-related changes X-Git-Tag: 0.5-rc1~181 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=419782afd8deeccb1fcd456fcdda2691aa11e406 More windowstate-related changes * Properly save/restore state to/from session * Fix minimize on close on Windows, fixes #703 * Various tweaks, hoping to solve the remaining issues with that Please test if you had problems with window behavior before, and get back to me. --- diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index f137ebe7..487be1d3 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -135,8 +135,6 @@ MainWin::MainWin(QWidget *parent) installEventFilter(new JumpKeyHandler(this)); QtUiApplication* app = qobject_cast qApp; - connect(app, SIGNAL(saveStateToSession(const QString&)), SLOT(saveStateToSession(const QString&))); - connect(app, SIGNAL(saveStateToSessionSettings(SessionSettings&)), SLOT(saveStateToSessionSettings(SessionSettings&))); connect(app, SIGNAL(aboutToQuit()), SLOT(aboutToQuit())); } @@ -218,11 +216,14 @@ void MainWin::saveStateToSettings(UiSettings &s) { } void MainWin::restoreStateFromSettings(UiSettings &s) { + _normalSize = s.value("MainWinSize", size()).toSize(); + _normalPos = s.value("MainWinPos", pos()).toPoint(); + restoreGeometry(s.value("MainWinGeometry").toByteArray()); if(isMaximized()) { // restoreGeometry() fails if the windows was maximized, so we resize and position explicitly - resize(s.value("MainWinSize", QSize(800, 500)).toSize()); - move(s.value("MainWinPos").toPoint()); + resize(_normalSize); + move(_normalPos); } restoreState(s.value("MainWinState").toByteArray()); @@ -826,22 +827,22 @@ void MainWin::moveEvent(QMoveEvent *event) { if(!(windowState() & Qt::WindowMaximized)) _normalPos = event->pos(); - event->ignore(); + QMainWindow::moveEvent(event); } void MainWin::resizeEvent(QResizeEvent *event) { if(!(windowState() & Qt::WindowMaximized)) _normalSize = event->size(); - event->ignore(); + QMainWindow::resizeEvent(event); } void MainWin::closeEvent(QCloseEvent *event) { QtUiSettings s; QtUiApplication* app = qobject_cast qApp; Q_ASSERT(app); - if(!app->aboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) { - toggleMinimizedToTray(); + if(!app->isAboutToQuit() && s.value("UseSystemTrayIcon").toBool() && s.value("MinimizeOnClose").toBool()) { + hideToTray(); event->ignore(); } else { event->accept(); @@ -1062,24 +1063,6 @@ void MainWin::on_actionDebugLog_triggered() { logWidget->show(); } -// FIXME -void MainWin::saveStateToSession(const QString &sessionId) { - return; - SessionSettings s(sessionId); - - s.setValue("MainWinSize", size()); - s.setValue("MainWinPos", pos()); - s.setValue("MainWinState", saveState()); -} - -// FIXME -void MainWin::saveStateToSessionSettings(SessionSettings & s) -{ - s.setValue("MainWinSize", size()); - s.setValue("MainWinPos", pos()); - s.setValue("MainWinState", saveState()); -} - void MainWin::showStatusBarMessage(const QString &message) { statusBar()->showMessage(message, 10000); } diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index d5690942..c905e089 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -84,8 +84,6 @@ class MainWin void restoreStateFromSettings(UiSettings &); public slots: - void saveStateToSession(const QString &sessionId); - void saveStateToSessionSettings(SessionSettings &s); void showStatusBarMessage(const QString &message); void toggleMinimizedToTray(); diff --git a/src/qtui/qtuiapplication.cpp b/src/qtui/qtuiapplication.cpp index 047b1f59..9d1b1bab 100644 --- a/src/qtui/qtuiapplication.cpp +++ b/src/qtui/qtuiapplication.cpp @@ -131,11 +131,10 @@ void QtUiApplication::commitData(QSessionManager &manager) { void QtUiApplication::saveState(QSessionManager & manager) { //qDebug() << QString("saving session state to id %1").arg(manager.sessionId()); - AccountId activeCore = Client::currentCoreAccount(); + AccountId activeCore = Client::currentCoreAccount(); // FIXME store this! SessionSettings s(manager.sessionId()); s.setSessionAge(0); - emit saveStateToSession(manager.sessionId()); - emit saveStateToSessionSettings(s); + QtUi::mainWindow()->saveStateToSettings(s); } void QtUiApplication::resumeSessionIfPossible() { @@ -145,8 +144,7 @@ void QtUiApplication::resumeSessionIfPossible() { SessionSettings s(sessionId()); s.sessionAging(); s.setSessionAge(0); - emit resumeFromSession(sessionId()); - emit resumeFromSessionSettings(s); + QtUi::mainWindow()->restoreStateFromSettings(s); s.cleanup(); } else { SessionSettings s(QString("1")); diff --git a/src/qtui/qtuiapplication.h b/src/qtui/qtuiapplication.h index fad3ea8e..4d34683a 100644 --- a/src/qtui/qtuiapplication.h +++ b/src/qtui/qtuiapplication.h @@ -51,13 +51,7 @@ public: virtual void commitData(QSessionManager &manager); virtual void saveState(QSessionManager &manager); - inline bool aboutToQuit() const { return _aboutToQuit; } - -signals: - void saveStateToSession(const QString &sessionId); - void saveStateToSessionSettings(SessionSettings &s); // FIXME refs in signals won't probably work - void resumeFromSession(const QString sessionId); - void resumeFromSessionSettings(SessionSettings &s); + inline bool isAboutToQuit() const { return _aboutToQuit; } private: bool _aboutToQuit;