diff --git a/configurationwidget.cpp b/configurationwidget.cpp
index 456b055..23dc0ac 100644
--- a/configurationwidget.cpp
+++ b/configurationwidget.cpp
@@ -73,11 +73,32 @@
                 CategorizedHistoryModel::instance()->historyLimit());
     ui->closeOrMinCheckBox->setChecked(settings_.value(
                                            SettingsKey::closeOrMinimized).toBool());
+    connect(ui->tabWidget, QTabWidget::currentChanged, [](int index) {
+        if (index == 1
+                && CallModel::instance()->getActiveCalls().size() == 0) {
+            Video::PreviewManager::instance()->startPreview();
+        } else {
+            if (CallModel::instance()->getActiveCalls().size() == 0
+                    && Video::PreviewManager::instance()->isPreviewing()) {
+                Video::PreviewManager::instance()->stopPreview();
+            }
+        }
+    });
 }
 
-void ConfigurationWidget::atExit() {
-    if (CallModel::instance()->getActiveCalls().size() == 0 ) {
-        ui->videoView->hide();
+void
+ConfigurationWidget::showEvent(QShowEvent *event) {
+    QWidget::showEvent(event);
+    if (ui->tabWidget->currentIndex() == 1
+            && CallModel::instance()->getActiveCalls().size() == 0) {
+        Video::PreviewManager::instance()->startPreview();
+    }
+}
+
+void
+ConfigurationWidget::atExit() {
+    if (CallModel::instance()->getActiveCalls().size() == 0
+            && Video::PreviewManager::instance()->isPreviewing()) {
         Video::PreviewManager::instance()->stopPreview();
     }
     accountModel_->save();
@@ -191,16 +212,6 @@
 }
 
 void
-ConfigurationWidget::showEvent(QShowEvent* event)
-{
-    QWidget::showEvent(event);
-    if (CallModel::instance()->getActiveCalls().size() == 0 ) {
-        ui->videoView->show();
-        Video::PreviewManager::instance()->startPreview();
-    }
-}
-
-void
 ConfigurationWidget::on_clearHistoryButton_clicked()
 {
     QMessageBox confirmationDialog;
