Summary: | konqueror can't be added in file association | ||
---|---|---|---|
Product: | [Frameworks and Libraries] kio | Reporter: | Nicolas L. <kde> |
Component: | general | Assignee: | David Faure <faure> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | AAW, drzeus-bugzilla, faure, frank.krueger.de |
Priority: | NOR | ||
Version: | SVN | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Unspecified | ||
Latest Commit: | Version Fixed In: | ||
Attachments: |
log of the test
log of the test Result of the requested test |
Description
Nicolas L.
2008-12-23 13:14:21 UTC
Same problem as 178560: your kbuildsycoca4 doesn't see the changes you make on the system (this time a new .desktop file, as opposed to changes in mimeapps.list). Same way of debugging it, adding debug output to kbuildsycoca4... For instance, kDebug() << file; at the beginning of KBuildServiceFactory::createEntry... what exact test do you want me to do ? btw i have kdelibs with the debug you asked 1) Take the konqueror-2.desktop created by kopenwithdialog and move it out of the way (/tmp). 2) kbuildsycoca4 --noincremental 3) move konqueror-2.desktop back to ~/.local/share/applications 4) kbuildsycoca4 2>&1 | tee log Check if the log file talks about konqueror-2. [don't wait too much between 3 and 4 otherwise kded might detect the new file and launch kbuildsycoca4 on its own]. Well, alternatively, 5) kbuildsycoca4 --noincremental 2>&1 | tee logfull and look for konqueror-2 in logfull. If everything seems fine there (the new file is noticed and no warning about it), then it might be a timing problem (kopenwithdialog is supposed to wait for kbuildsycoca4 to finish...) Created attachment 29607 [details]
log of the test
btw konqueror is not available where i wanted to add it.
for information here is the konqueror-2.desktop
[Desktop Entry]
Exec=konqueror
MimeType=interface/x-winamp-skin;
Name=konqueror
NoDisplay=true
Type=Application
Created attachment 29608 [details]
log of the test
btw konqueror is not available where i wanted to add it.
for information here is the konqueror-2.desktop
[Desktop Entry]
Exec=konqueror
MimeType=interface/x-winamp-skin;
Name=konqueror
NoDisplay=true
Type=Application
Created attachment 29609 [details]
Result of the requested test
btw konqueror is not available where i wanted to add it.
for information here is the konqueror-2.desktop
[Desktop Entry]
Exec=konqueror
MimeType=interface/x-winamp-skin;
Name=konqueror
NoDisplay=true
Type=Application
ooops sorry :/ i had a connection pb OK, the file is seen but has the wrong menuId. More debug needed. Leave konqueror-2.desktop in place (no need to move it out this time), apply this patch to kdelibs. http://www.davidfaure.fr/tmp/moredebug.diff Ensure area 7021 is enabled in kdebugdialog. Then run kbuildsycoca4 --noincremental 2>&1 | grep konqueror-2 Here I see: kbuildsycoca4(7674) KBuildServiceFactory::createEntry: Creating KService from "/home/dfaure/.local/share/applications/konqueror-2.desktop" entryPath= "/home/dfaure/.local/share/applications/konqueror-2.desktop" kbuildsycoca4(7674) KService::setMenuId: "/home/dfaure/.local/share/applications/konqueror-2.desktop" menuId= "konqueror-2.desktop" kbuildsycoca4(7674) KBuildServiceFactory::addEntry: adding service "konqueror-2.desktop" name= "konqueror-2" relName= "/home/dfaure/.local/share/applications/konqueror-2.desktop" kbuildsycoca4(7674) KBuildServiceFactory::findServiceByMenuId: "konqueror-2.desktop" true I suspect the menuId is not set in your case, which would then come from the XDG VFolder stuff [which I don't know much about...]. Try removing the Mandriva vfolder customizations, does it work then? I obtained this with mandriva applications.menu $ kbuildsycoca4 --noincremental 2>&1 | grep konqueror-2 kbuildsycoca4(9280) KBuildServiceFactory::createEntry: "/home/test/.local/share/applications/konqueror-2.desktop" kbuildsycoca4(9280) KBuildServiceFactory::createEntry: "/home/test/.local/share/applications/konqueror-2.desktop" kbuildsycoca4(9280) KBuildServiceFactory::createEntry: Creating KService from "/home/test/.local/share/applications/konqueror-2.desktop" entryPath= "/home/test/.local/share/applications/konqueror-2.desktop" kbuildsycoca4(9280) KService::setMenuId: "/home/test/.local/share/applications/konqueror-2.desktop" menuId= "konqueror-2.desktop" kbuildsycoca4(9280) KBuildServiceFactory::findServiceByMenuId: "konqueror-2.desktop" false kbuildsycoca4(9280) KBuildServiceFactory::findServiceByDesktopPath: "konqueror-2.desktop" false kbuildsycoca4(9280) KBuildServiceFactory::findServiceByDesktopName: "kde4-konqueror-2" false kbuildsycoca4(9280) KBuildServiceFactory::findServiceByDesktopName: "konqueror-2" false kbuildsycoca4(9280) KMimeAssociations::parseAddedAssociations: "/home/test/.local/share/applications/mimeapps.list" specifies unknown service "konqueror-2.desktop" in "Added Associations" i obtain the same with kde applications.menu $ kbuildsycoca4 --noincremental 2>&1 | grep konqueror-2 kbuildsycoca4(9372) KBuildServiceFactory::createEntry: "/home/test/.local/share/applications/konqueror-2.desktop" kbuildsycoca4(9372) KBuildServiceFactory::createEntry: "/home/test/.local/share/applications/konqueror-2.desktop" kbuildsycoca4(9372) KBuildServiceFactory::createEntry: Creating KService from "/home/test/.local/share/applications/konqueror-2.desktop" entryPath= "/home/test/.local/share/applications/konqueror-2.desktop" kbuildsycoca4(9372) KService::setMenuId: "/home/test/.local/share/applications/konqueror-2.desktop" menuId= "konqueror-2.desktop" kbuildsycoca4(9372) KBuildServiceFactory::findServiceByMenuId: "konqueror-2.desktop" false kbuildsycoca4(9372) KBuildServiceFactory::findServiceByDesktopPath: "konqueror-2.desktop" false kbuildsycoca4(9372) KBuildServiceFactory::findServiceByDesktopName: "kde4-konqueror-2" false kbuildsycoca4(9372) KBuildServiceFactory::findServiceByDesktopName: "konqueror-2" false kbuildsycoca4(9372) KMimeAssociations::parseAddedAssociations: "/home/test/.local/share/applications/mimeapps.list" specifies unknown service "konqueror-2.desktop" in "Added Associations" OK, the call to KBuildServiceFactory::addEntry is missing, and I found out why. It works here because the VFolder stuff puts konqueror-2.desktop into the "Lost & Found" category. This can be seen by removing the NoDisplay=true from the desktop file, and then doing kbuildsycoca4 --menutest 2>&1 | grep konqueror-2 which shows Lost & Found/ konqueror-2.desktop So this shows that it's indeed the mandriva vfolder setup that causes this bug, and it also shows that kbuildsycoca4 is a bit too fragile about this; I have to find a way to make desktop files "exist" even if they are not categorized as "Lost & Found" (especially since desktop files generated by the "open with" dialog have NoDisplay=true anyway...). FWIW, the Lost & Found submenu comes from this code in kde's applications.menu: <Name>Applications</Name> <Directory>kde-unknown.directory</Directory> <OnlyUnallocated/> (the string "Lost & Found" is in that $prefix/share/desktop-directories/kde-unknown.directory file) SVN commit 901685 by dfaure: Fix a VERY old bug which prevents creating new desktop files in order to associate them with mimetypes. Lately the symptom was the ASSERT(m_pService) in kopenwithdialog; before that (including in kde-3.x) it would just not work. The cause for all this: distro-modified applications.menu where "Lost & Found" was removed. The fix: adding the service to the factory as soon as we parse the .desktop file, independenly from whether it matches a menu category or not. BUG: 178561 M +3 -0 kbuildservicefactory.cpp M +1 -2 kbuildsycoca.cpp M +5 -1 vfolder_menu.cpp M +9 -2 vfolder_menu.h WebSVN link: http://websvn.kde.org/?view=rev&revision=901685 SVN commit 901693 by dfaure: Backport fix for user-created desktop files not being useable on some distros (r901685) --> the fix will be in KDE-4.1.4. CCBUG: 178561 M +1 -2 kbuildsycoca.cpp M +5 -1 vfolder_menu.cpp M +9 -2 vfolder_menu.h WebSVN link: http://websvn.kde.org/?view=rev&revision=901693 *** Bug 179900 has been marked as a duplicate of this bug. *** *** Bug 137143 has been marked as a duplicate of this bug. *** |