diff --git a/callwidget.cpp b/callwidget.cpp
index 398433b1f7ed76835428975e963fe1673821f27d..fdf245d743822090d70a9c6b850175fec32ed278 100644
--- a/callwidget.cpp
+++ b/callwidget.cpp
@@ -49,7 +49,7 @@ CallWidget::CallWidget(QWidget *parent) :
     connect(ui->videoWidget, SIGNAL(setChatVisibility(bool)),
             ui->instantMessagingWidget, SLOT(setVisible(bool)));
 
-    ui->spinnerLabel->hide();
+    ui->spinnerWidget->hide();
     spinner_ = new QMovie(":/images/spinner.gif");
     if (spinner_->isValid()) {
         ui->spinnerLabel->setMovie(spinner_);
@@ -262,7 +262,7 @@ CallWidget::callStateChanged(Call* call, Call::State previousState)
         ui->videoWidget->hide();
         displaySpinner(false);
         auto onHoldCall = callModel_->getActiveCalls().first();
-        if (onHoldCall != nullptr) {
+        if (onHoldCall != nullptr && onHoldCall->state() == Call::State::HOLD) {
             setActualCall(onHoldCall);
             onHoldCall->performAction(Call::Action::HOLD);
         }
@@ -349,7 +349,13 @@ CallWidget::on_sortComboBox_currentIndexChanged(int index)
 void
 CallWidget::displaySpinner(bool display)
 {
-    display ? ui->spinnerLabel->show() : ui->spinnerLabel->hide();
+    display ? ui->spinnerWidget->show() : ui->spinnerWidget->hide();
     if (ui->spinnerLabel->movie())
         display ? ui->spinnerLabel->movie()->start() : ui->spinnerLabel->movie()->stop();
 }
+
+void CallWidget::on_cancelButton_clicked()
+{
+    if (actualCall_)
+        actualCall_->performAction(Call::Action::REFUSE);
+}
diff --git a/callwidget.h b/callwidget.h
index 55fdf190a12419807b1f91f88270b38e22c80a48..81f5022bcf9c17be397c080d295117ee7a9f9a11 100644
--- a/callwidget.h
+++ b/callwidget.h
@@ -66,6 +66,8 @@ private slots:
     void findRingAccount(QModelIndex idx1, QModelIndex idx2, QVector<int> vec);
     void checkRegistrationState(Account* account,Account::RegistrationState state);
 
+    void on_cancelButton_clicked();
+
 private:
     Ui::CallWidget *ui;
     Call* actualCall_;
diff --git a/callwidget.ui b/callwidget.ui
index 221ebd6b5a501220b2fee83c2d5020e039c474a0..a90c3ad49d91e9b2b1283e104ff20fc73bc93562 100644
--- a/callwidget.ui
+++ b/callwidget.ui
@@ -51,13 +51,32 @@
           <widget class="VideoView" name="videoWidget" native="true"/>
          </item>
          <item>
-          <widget class="QLabel" name="spinnerLabel">
-           <property name="text">
-            <string/>
-           </property>
-           <property name="alignment">
-            <set>Qt::AlignCenter</set>
-           </property>
+          <widget class="QWidget" name="spinnerWidget" native="true">
+           <layout class="QVBoxLayout" name="spinnerLayout">
+            <item>
+             <widget class="QLabel" name="spinnerLabel">
+              <property name="text">
+               <string/>
+              </property>
+              <property name="alignment">
+               <set>Qt::AlignCenter</set>
+              </property>
+             </widget>
+            </item>
+            <item alignment="Qt::AlignHCenter">
+             <widget class="QPushButton" name="cancelButton">
+              <property name="maximumSize">
+               <size>
+                <width>100</width>
+                <height>16777215</height>
+               </size>
+              </property>
+              <property name="text">
+               <string>Cancel</string>
+              </property>
+             </widget>
+            </item>
+           </layout>
           </widget>
          </item>
          <item alignment="Qt::AlignHCenter|Qt::AlignVCenter">