X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fmainwin.cpp;h=d16916df37d64cd45d3bad2126529bb494fc43ee;hp=cf283e485380276821bfda37d78d9aae33d84acc;hb=da28b86876edea39e97ffdd4cc5602072c001f93;hpb=f2e4609f070221a010eef8be98524c5ce88d228b diff --git a/src/qtui/mainwin.cpp b/src/qtui/mainwin.cpp index cf283e48..d16916df 100644 --- a/src/qtui/mainwin.cpp +++ b/src/qtui/mainwin.cpp @@ -100,6 +100,9 @@ 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(Client::instance(), SIGNAL(networkCreated(NetworkId)), this, SLOT(clientNetworkCreated(NetworkId))); connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), this, SLOT(clientNetworkRemoved(NetworkId))); //ui.bufferWidget->init(); @@ -131,7 +134,7 @@ void MainWin::init() { // restore mainwin state restoreState(s.value("MainWinState").toByteArray()); - disconnectedFromCore(); // Disable menus and stuff + setDisconnectedState(); // Disable menus and stuff showCoreConnectionDlg(true); // autoconnect if appropriate // attach the BufferWidget to the BufferModel and the default selection @@ -217,7 +220,7 @@ void MainWin::removeBufferView(int bufferViewConfigId) { break; dock = qobject_cast(action->parent()); - if(dock && actionData.toInt() != bufferViewConfigId) { + if(dock && actionData.toInt() == bufferViewConfigId) { removeAction(action); dock->deleteLater(); } @@ -399,7 +402,10 @@ void MainWin::connectedToCore() { foreach(BufferInfo id, Client::allBufferInfos()) { Client::backlogManager()->requestBacklog(id.bufferId(), 500, -1); } + setConnectedState(); +} +void MainWin::setConnectedState() { ui.menuViews->setEnabled(true); //ui.menuCore->setEnabled(true); ui.actionConnectCore->setEnabled(false); @@ -447,7 +453,11 @@ void MainWin::disconnectedFromCore() { dock->deleteLater(); } } + restoreState(s.value("MainWinState").toByteArray()); + setDisconnectedState(); +} +void MainWin::setDisconnectedState() { ui.menuViews->setEnabled(false); //ui.menuCore->setEnabled(false); ui.actionDisconnectCore->setEnabled(false);