diff --git a/kcms/componentchooser/componentchooserbrowser.cpp b/kcms/componentchooser/componentchooserbrowser.cpp --- a/kcms/componentchooser/componentchooserbrowser.cpp +++ b/kcms/componentchooser/componentchooserbrowser.cpp @@ -104,6 +104,11 @@ void CfgBrowser::save(KConfig *) { + if (currentIndex() == count() -1) { + // no browser installed, nor selected + return; + } + const QString browserStorageId = currentData().toString(); BrowserSettings settings; diff --git a/kcms/componentchooser/componentchooseremail.cpp b/kcms/componentchooser/componentchooseremail.cpp --- a/kcms/componentchooser/componentchooseremail.cpp +++ b/kcms/componentchooser/componentchooseremail.cpp @@ -140,6 +140,10 @@ { const QString &storageId = currentData().toString(); const KService::Ptr emailClientService = KService::serviceByStorageId(storageId); + if (!emailClientService) { + // no email client installed or selected + return; + } const bool kmailSelected = m_defaultIndex != -1 && currentIndex() == m_defaultIndex; if (kmailSelected) { diff --git a/kcms/componentchooser/componentchooserterminal.cpp b/kcms/componentchooser/componentchooserterminal.cpp --- a/kcms/componentchooser/componentchooserterminal.cpp +++ b/kcms/componentchooser/componentchooserterminal.cpp @@ -90,7 +90,9 @@ void CfgTerminalEmulator::save(KConfig *) { const QString terminal = currentData().toString(); - m_currentIndex = currentIndex(); + if (terminal.isEmpty()) { + return; + } TerminalSettings settings; settings.setTerminalApplication(terminal);