davidedmundson added a comment.
> About KCModuleQML didn't investigate a lot but KCModule (parent class) emit a changed false on showEvent (the way the handle to set need save to false. Aha! What a weird bit of code. so I think I see what happens: 1. KCModule::showEvent() 2. this queues up a load and queues up a KCModule::changed(false) 3. during load ConfigModule::setNeedsSave(true) is called we set d->_needsSave to true 4. we emit ConfigModule::changed(true) which we proxy through to KCModule::changed(true) 5. we then process the queued KCModule::setChanged(false) from the earlier KCModule::showEvent 6. so we disable the button 7. any subsequent changes in the KCM will call ConfigModule::setNeedsSave(true) but this now matches d->_needsSave so it no-ops. Even though KCModule is out of sync. Systemsettings only knows what KCModule signals, not ConfigModule. This patch resets ConfigModule::d->_needsSave after step 3 --- In the morning can you confirm that commenting out the return in void ConfigModule::setNeedsSave(bool needs) { if (needs == d->_needsSave) { return; } also fixes it. If so, I understand it all, and will happily approve this patch. REPOSITORY R119 Plasma Desktop REVISION DETAIL https://phabricator.kde.org/D27384 To: bport, #plasma, broulik, ervin, crossi, meven, ngraham, davidedmundson, The-Feren-OS-Dev Cc: The-Feren-OS-Dev, plasma-devel, Orage, LeGast00n, cblack, jraleigh, zachus, fbampaloukas, GB_2, ragreen, ZrenBot, ngraham, alexeymin, himcesjf, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, ahiemstra, mart