diff --git a/kcms/componentchooser/componentchooserfilemanager.h b/kcms/componentchooser/componentchooserfilemanager.h --- a/kcms/componentchooser/componentchooserfilemanager.h +++ b/kcms/componentchooser/componentchooserfilemanager.h @@ -43,6 +43,8 @@ void changed(bool); private: + QRadioButton* findDolphinRadio() const; + QList mDynamicRadioButtons; }; diff --git a/kcms/componentchooser/componentchooserfilemanager.cpp b/kcms/componentchooser/componentchooserfilemanager.cpp --- a/kcms/componentchooser/componentchooserfilemanager.cpp +++ b/kcms/componentchooser/componentchooserfilemanager.cpp @@ -20,7 +20,6 @@ #include "componentchooserfilemanager.h" #include -#include #include #include #include @@ -48,14 +47,31 @@ void CfgFileManager::defaults() { load(nullptr); + + const auto radio = findDolphinRadio(); + if (radio) { + radio->setChecked(true); + } +} + +QRadioButton* CfgFileManager::findDolphinRadio() const { + auto it = std::find_if(mDynamicRadioButtons.begin(), mDynamicRadioButtons.end(), [=](QRadioButton *radio) { + return radio->property("storageId") == QStringLiteral("org.kde.dolphin.desktop"); + }); + if (it == mDynamicRadioButtons.end()) { + return nullptr; + } + return *it; } bool CfgFileManager::isDefaults() const { if (!mDynamicRadioButtons.isEmpty()) { - return !mDynamicRadioButtons.last()->isChecked(); + // When dolphin is not present, we can't assume any default value + const auto dolphinRadio = findDolphinRadio(); + return !dolphinRadio || dolphinRadio->isChecked(); } else { - return false; + return true; } }