On 11/02/2010 09:26 AM, Jonathan Marten wrote: > Dear all, > > Since it got committed to trunk a few days ago, the new activity > manager (kdebase/runtime/activitymanager) crashes the "kcmkded" > systemsettings module: > > ASSERT: "file.desktopGroup().readEntry("X-KDE-ServiceTypes") == "KDEDModule"" > in file /ws/trunk/kdebase/runtime/kcontrol/kded/kcmkded.cpp, line 190 > > This seems to be because it installs a desktop file > (share/kde4/services/kded/activitymanager.desktop) which contains > only: > > [Desktop Entry] > Hidden=true > > KDEDConfig::load() simply lists all the desktop files in the "kded" > subdirectory - it does not check whether the desktop file is hidden, > therefore hitting the assert later. > > So my question: where is the best place to fix this? Should it be: > > a) add the required (plus some dummy) entries to > activitymanager.desktop, until its final version is in place. Just > adding X-KDE-ServiceTypes=KDEDModule, though, fixes the assert but > shows a blank service entry in the list. > > b) check for file.desktopGroup().readEntry("Hidden", false) just > before the assert, and continue the loop if so. > > c) use a KServiceTypeTrader query (which hopefully ignores hidden > desktop files) instead of listing them. > > Even if we say that (a) is the solution for this particular instance, > it still leaves an unexpected catch in this systemsettings module > (desktop files here cannot be hidden in the same way as others). So > should one of (b) or (c) be implemented also?
c seems the correct solution here. Isn't that what the service type trader is for anyway? Cheers, Sebastian