From: Manuel Nickschas Date: Wed, 18 Nov 2009 19:48:26 +0000 (+0100) Subject: Fix initial backlock fetch with >= qt-4.6.0-rc1 X-Git-Tag: 0.6-beta1~178 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=39cf1e00fdc1108a393103433b3f5854b6df673e Fix initial backlock fetch with >= qt-4.6.0-rc1 We don't get unnecessary show events anymore on mainwin state restore, so we need to make sure that docks are not shown before we load the layout. --- diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index b3f19426..1191d88f 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -126,7 +126,8 @@ MainWin::MainWin(QWidget *parent) sslLabel(new QLabel()), msgProcessorStatusWidget(new MsgProcessorStatusWidget()), _titleSetter(this), - _awayLog(0) + _awayLog(0), + _layoutLoaded(false) { #ifdef Q_WS_WIN dwTickCount = 0; @@ -443,12 +444,11 @@ void MainWin::addBufferView(ClientBufferViewConfig *config) { BufferView *view = new BufferView(dock); view->setFilteredModel(Client::bufferModel(), config); view->installEventFilter(_inputWidget); // for key presses - view->show(); Client::bufferModel()->synchronizeView(view); dock->setWidget(view); - dock->show(); + dock->setVisible(_layoutLoaded); // don't show before state has been restored addDockWidget(Qt::LeftDockWidgetArea, dock); _bufferViewsMenu->addAction(dock->toggleViewAction()); @@ -468,6 +468,7 @@ void MainWin::removeBufferView(int bufferViewConfigId) { dock = qobject_cast(action->parent()); if(dock && actionData.toInt() == bufferViewConfigId) { removeAction(action); + _bufferViews.removeAll(dock); dock->deleteLater(); } } @@ -741,6 +742,7 @@ void MainWin::loadLayout() { QtUiSettings s; int accountId = Client::currentCoreAccount().toInt(); restoreState(s.value(QString("MainWinState-%1").arg(accountId)).toByteArray(), accountId); + _layoutLoaded = true; } void MainWin::saveLayout() { @@ -761,6 +763,8 @@ void MainWin::updateLagIndicator(int lag) { void MainWin::disconnectedFromCore() { // save core specific layout and remove bufferviews; saveLayout(); + _layoutLoaded = false; + QVariant actionData; BufferViewDock *dock; foreach(QAction *action, _bufferViewsMenu->actions()) { @@ -771,9 +775,11 @@ void MainWin::disconnectedFromCore() { dock = qobject_cast(action->parent()); if(dock && actionData.toInt() != -1) { removeAction(action); + _bufferViews.removeAll(dock); dock->deleteLater(); } } + QtUiSettings s; restoreState(s.value("MainWinState").toByteArray()); setDisconnectedState(); diff --git a/src/qtui/mainwin.h b/src/qtui/mainwin.h index c22d32d2..bee2cd27 100644 --- a/src/qtui/mainwin.h +++ b/src/qtui/mainwin.h @@ -196,6 +196,8 @@ class MainWin QWidget *_awayLog; + bool _layoutLoaded; + QSize _normalSize; //!< Size of the non-maximized window QPoint _normalPos; //!< Position of the non-maximized window