http://bugs.winehq.org/show_bug.cgi?id=25166
--- Comment #22 from Damjan Jovanovic damjan.jov@gmail.com 2011-11-20 09:05:59 CST --- (In reply to comment #21)
(In reply to comment #17) Damjan, I don't understand why we can only store one progid per desktop file. Where are the progids currently stored? Why can't we have something like..
X-Wine-ProgID=application/x-wine-extension-001:progid1;application/x-wine-extension-002:progid2; etc
Fd.o first recognizes the file's MIME type, then the application registered for that MIME type is launched with the given file(s). If the application is registered with multiple MIME types, it has no idea which MIME type it was launched for.
Windows checks the extension. The ProgID registered for that extension is found. The application listed under that ProgID is launched, and this application knows which ProgID it was launched for.
Currently we correctly emulate Window's behavior. If multiple extension list the same ProgID, we do de-duplicate them down to just ONE entry: you only have a wine-extension-jpe.desktop, and not also a wine-extension-jpeg.desktop and wine-extension-jpg.desktop, because all 3 of those extensions have the same "jpegfile" ProgID. But if you right-click a JPEG file, you'll see another entry from Wine, and that's from wine-extension-jfif.desktop, which has a different ProgID of "pjpegfile".
You want to de-duplicate ProgIDs down to the application. This is particularly difficult. Different ProgID entries could use different command line options, in which case we can't merge them, since the .desktop file only allows ONE command line. Even if we don't merge them in that case, but only merge them when the entire command line matches, like I mentioned earlier, the Windows application knows which ProgID it was launched for, and we have no idea which MIME type fd.o launched us for, so we have to guess...