diff --git a/callwidget.cpp b/callwidget.cpp
index 6c4625ddfa98cebd5c04d3e6c7a38dee651f300d..398433b1f7ed76835428975e963fe1673821f27d 100644
--- a/callwidget.cpp
+++ b/callwidget.cpp
@@ -261,6 +261,13 @@ CallWidget::callStateChanged(Call* call, Call::State previousState)
         setActualCall(nullptr);
         ui->videoWidget->hide();
         displaySpinner(false);
+        auto onHoldCall = callModel_->getActiveCalls().first();
+        if (onHoldCall != nullptr) {
+            setActualCall(onHoldCall);
+            onHoldCall->performAction(Call::Action::HOLD);
+        }
+    } else if (call->state() == Call::State::HOLD) {
+        ui->videoWidget->hide();
     } else if (call->state() == Call::State::CURRENT) {
         displaySpinner(false);
         ui->videoWidget->show();