Show default bufferview if we don't have a saved state
[quassel.git] / src / qtui / mainwin.cpp
index 1191d88..2ff5701 100644 (file)
@@ -469,6 +469,7 @@ void MainWin::removeBufferView(int bufferViewConfigId) {
     if(dock && actionData.toInt() == bufferViewConfigId) {
       removeAction(action);
       _bufferViews.removeAll(dock);
+      Client::bufferViewOverlay()->removeView(dock->bufferViewId());
       dock->deleteLater();
     }
   }
@@ -479,6 +480,11 @@ void MainWin::bufferViewToggled(bool enabled) {
   Q_ASSERT(action);
   BufferViewDock *dock = qobject_cast<BufferViewDock *>(action->parent());
   Q_ASSERT(dock);
+
+  // Make sure we don't toggle backlog fetch for a view we've already removed
+  if(!_bufferViews.contains(dock))
+    return;
+
   if(enabled) {
     Client::bufferViewOverlay()->addView(dock->bufferViewId());
     BufferViewConfig *config = dock->config();
@@ -741,7 +747,15 @@ void MainWin::setConnectedState() {
 void MainWin::loadLayout() {
   QtUiSettings s;
   int accountId = Client::currentCoreAccount().toInt();
-  restoreState(s.value(QString("MainWinState-%1").arg(accountId)).toByteArray(), accountId);
+  QByteArray state = s.value(QString("MainWinState-%1").arg(accountId)).toByteArray();
+  if(state.isEmpty()) {
+    // Make sure that the default bufferview is shown
+    if(_bufferViews.count())
+      _bufferViews.at(0)->show();
+    return;
+  }
+
+  restoreState(state, accountId);
   _layoutLoaded = true;
 }
 
@@ -776,6 +790,7 @@ void MainWin::disconnectedFromCore() {
     if(dock && actionData.toInt() != -1) {
       removeAction(action);
       _bufferViews.removeAll(dock);
+      Client::bufferViewOverlay()->removeView(dock->bufferViewId());
       dock->deleteLater();
     }
   }