diff --git a/settingswidget.cpp b/settingswidget.cpp
index 1cd2a433f0031731a15c28656c46dd0c1929f79a..97bcd7cc64a3f7ebe0aef461e50eb5a964e36495 100644
--- a/settingswidget.cpp
+++ b/settingswidget.cpp
@@ -172,7 +172,9 @@ void SettingsWidget::setSelected(Button sel)
         ui->accountSettingsButton->setChecked(true);
         ui->generalSettingsButton->setChecked(false);
         ui->mediaSettingsButton->setChecked(false);
-        if (pastButton_ == sel) { return; }
+        if (pastButton_ == sel && pastAccount_ == LRCInstance::getCurrentAccountInfo().profileInfo.type) {
+            return;
+        }
 
         if (!LRCInstance::getActiveCalls().size()) {
             QtConcurrent::run( [this] { LRCInstance::avModel().stopPreview(); });
@@ -183,11 +185,13 @@ void SettingsWidget::setSelected(Button sel)
             if (advancedSIPSettingsDropped_) {
                 toggleAdvancedSIPSettings();
             }
+            pastAccount_ = lrc::api::profile::Type::SIP;
         } else {
             ui->stackedWidget->setCurrentWidget(ui->currentAccountSettingsScrollWidget);
             if (advancedSettingsDropped_) {
                 toggleAdvancedSettings();
             }
+            pastAccount_ = lrc::api::profile::Type::RING;
         }
 
         break;
diff --git a/settingswidget.h b/settingswidget.h
index 43cbd6f181a5e96e9817ba8052b9bf632edbaa86..7c7f9ee11d1aeeae0d025539556d1b1dd4a7dfb1 100644
--- a/settingswidget.h
+++ b/settingswidget.h
@@ -93,6 +93,7 @@ private:
     AdvancedSettingsWidget* advancedSettingsWidget_;
     QScrollArea* scrollArea_;
     Button pastButton_ = Button::generalSettingsButton;
+    lrc::api::profile::Type pastAccount_ = lrc::api::profile::Type::INVALID;
     bool advancedSettingsDropped_ = false;
     QList<QPair<std::string, float>> formatIndexList_;
     std::string currentDisplayedVideoDevice_;