Hidden KDED desktop file crashing systemsettings - where to fix?

Sebastian TrĂ¼g trueg at kde.org
Tue Nov 2 08:41:22 GMT 2010


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




More information about the kde-core-devel mailing list