diff --git a/src/calladapter.cpp b/src/calladapter.cpp
index 0174a9cc6d569c24a51e34bcaef313759a1fbec4..6686cc5f0c6d0761396e4017b9b8f704e7ff3e1f 100644
--- a/src/calladapter.cpp
+++ b/src/calladapter.cpp
@@ -392,6 +392,7 @@ CallAdapter::connectCallModel(const QString& accountId)
             case lrc::api::call::Status::TIMEOUT:
             case lrc::api::call::Status::TERMINATING: {
                 lrcInstance_->renderer()->removeDistantRenderer(callId);
+                emit callSetupMainViewRequired(accountId, convInfo.uid);
                 if (convInfo.uid.isEmpty()) {
                     break;
                 }
@@ -424,9 +425,8 @@ CallAdapter::connectCallModel(const QString& accountId)
                                 /*
                                  * Reset the call view corresponding accountId, uid.
                                  */
+                                lrcInstance_->setSelectedConvId(otherConv.uid);
                                 updateCall(otherConv.uid, otherConv.accountId, forceCallOnly);
-
-                                emit callSetupMainViewRequired(accountId, convInfo.uid);
                             }
                         }
                     }
@@ -451,8 +451,6 @@ CallAdapter::connectCallModel(const QString& accountId)
             default:
                 break;
             }
-
-            emit lrcInstance_->updateSmartList();
         });
 
     remoteRecordingChangedConnection_ = QObject::connect(
diff --git a/src/conversationsadapter.cpp b/src/conversationsadapter.cpp
index 8d4510ddb6d34b87eed1dd845e6f4b0f510daa5b..228f3f18f686fc9d4c5556bfa9a908cc378c72e5 100644
--- a/src/conversationsadapter.cpp
+++ b/src/conversationsadapter.cpp
@@ -192,7 +192,6 @@ ConversationsAdapter::connectConversationModel(bool updateFilter)
         currentConversationModel, &lrc::api::ConversationModel::modelChanged, [this]() {
             conversationSmartListModel_->fillConversationsList();
             updateConversationsFilterWidget();
-            emit updateListViewRequested();
 
             auto* convModel = lrcInstance_->getCurrentConversationModel();
             const auto& convInfo = lrcInstance_->getConversationFromConvUid(
@@ -257,7 +256,7 @@ ConversationsAdapter::connectConversationModel(bool updateFilter)
                            &lrc::api::ConversationModel::conversationCleared,
                            [this](const QString& convUid) {
                                // If currently selected, switch to welcome screen (deselecting
-                               // current smartlist item ).
+                               // current smartlist item).
                                if (convUid != lrcInstance_->getCurrentConvUid()) {
                                    return;
                                }
diff --git a/src/mainview/components/ConversationSmartListView.qml b/src/mainview/components/ConversationSmartListView.qml
index 7fe91f767e9b570ce0b46c6b23a20a3435fd103d..7fc6dad12877958c04eb6b9002ea58ad7c358cf8 100644
--- a/src/mainview/components/ConversationSmartListView.qml
+++ b/src/mainview/components/ConversationSmartListView.qml
@@ -42,6 +42,8 @@ ListView {
     }
 
     function repositionIndex(uid = "") {
+        // Only update index if it has changed
+        var currentI = root.currentIndex
         if (uid === "")
             uid = mainView.currentConvUID
         root.currentIndex = -1
diff --git a/src/mainview/components/ConversationSmartListViewItemDelegate.qml b/src/mainview/components/ConversationSmartListViewItemDelegate.qml
index a7a4bc1640c9b0dfc77399ef480acef77475929a..d1c00efb925b09679a1587d20f6862d841c4d9ea 100644
--- a/src/mainview/components/ConversationSmartListViewItemDelegate.qml
+++ b/src/mainview/components/ConversationSmartListViewItemDelegate.qml
@@ -41,12 +41,11 @@ ItemDelegate {
     Connections {
         target: conversationSmartListView
 
-
         // Hack, make sure that smartListItemDelegate does not show extra item
         // when searching new contacts.
         function onForceUpdatePotentialInvalidItem() {
-            smartListItemDelegate.visible = conversationSmartListView.model.rowCount(
-                        ) <= index ? false : true
+            smartListItemDelegate.visible =
+                    conversationSmartListView.model.rowCount() <= index ? false : true
         }
 
 
@@ -123,8 +122,9 @@ ItemDelegate {
                 id: textMetricsConversationSmartListUserName
                 font: conversationSmartListUserName.font
                 elide: Text.ElideRight
-                elideWidth: LastInteractionDate ? (smartListItemDelegate.width - lastInteractionPreferredWidth - conversationSmartListUserImage.width-32) :
-                                                  smartListItemDelegate.width - lastInteractionPreferredWidth
+                elideWidth: LastInteractionDate ? (smartListItemDelegate.width - lastInteractionPreferredWidth
+                                                   - conversationSmartListUserImage.width-32)
+                                                : smartListItemDelegate.width - lastInteractionPreferredWidth
                 text: DisplayName === undefined ? "" : DisplayName
             }
             text: textMetricsConversationSmartListUserName.elidedText
@@ -161,8 +161,9 @@ ItemDelegate {
             id: textMetricsConversationSmartListUserLastInteractionMessage
             font: conversationSmartListUserLastInteractionMessage.font
             elide: Text.ElideRight
-            elideWidth: LastInteractionDate ? (smartListItemDelegate.width - lastInteractionPreferredWidth - conversationSmartListUserImage.width-32) :
-                                              smartListItemDelegate.width - lastInteractionPreferredWidth
+            elideWidth: LastInteractionDate ? (smartListItemDelegate.width - lastInteractionPreferredWidth
+                                               - conversationSmartListUserImage.width-32)
+                                            : smartListItemDelegate.width - lastInteractionPreferredWidth
             text: InCall ? UtilsAdapter.getCallStatusStr(CallState) : (Draft ? Draft : LastInteraction)
         }