diff --git a/src/plugins/debugger/debuggeruiswitcher.cpp b/src/plugins/debugger/debuggeruiswitcher.cpp
index f5cceab28da230485e263142990d6d3e5e4b61cc..4c3f51aa74125302d02c2026718c42273d327445 100644
--- a/src/plugins/debugger/debuggeruiswitcher.cpp
+++ b/src/plugins/debugger/debuggeruiswitcher.cpp
@@ -265,6 +265,8 @@ void DebuggerUISwitcher::updateUiForRunConfiguration(ProjectExplorer::RunConfigu
 
 void DebuggerUISwitcher::updateActiveLanguages()
 {
+    DebuggerLanguages prevLanguages = d->m_activeDebugLanguages;
+
     d->m_activeDebugLanguages = AnyLanguage;
 
     if (d->m_activateCppAction->isChecked())
@@ -274,8 +276,15 @@ void DebuggerUISwitcher::updateActiveLanguages()
         d->m_activeDebugLanguages |= QmlLanguage;
 
     if (d->m_activeDebugLanguages == AnyLanguage) {
-        d->m_activateCppAction->setChecked(true);
-        d->m_activeDebugLanguages = CppLanguage;
+        // do mutual exclusive selection if qml is enabled. Otherwise, just keep
+        // cpp language selected.
+        if (prevLanguages & CppLanguage && d->m_qmlEnabled) {
+            d->m_activeDebugLanguages = QmlLanguage;
+            d->m_activateQmlAction->setChecked(true);
+        } else {
+            d->m_activateCppAction->setChecked(true);
+            d->m_activeDebugLanguages = CppLanguage;
+        }
     }
 
     emit activeLanguagesChanged(d->m_activeDebugLanguages);