On Mon, 21 Sep 2009, Ralf Jung wrote: [...]
If wine should integrate well with the surrounding Linux desktop, why don't you use the desktop icon set where possible?
Because on Windows the icons are stored as resources in the dlls. So Windows applications and dlls use the same generic API for loading their private resources, as well as the Windows resources.
So to implement what you want, the LoadIcon() function in user32.dll would need to know about the icons stored in shell32.dll, crypt32.dll, etc, and what KDE, Gnome or XFce icon to replace them with. That would break the dll separation principle.
Maybe theming provides a way to replace these icons. If so, then that would be the way to go. Otherwise we may invent our own way of doing so, like storing special 'remapping' resources that would tell LoadIcon() to replace a given icon with one from outside the dll. That would still require quite a bit of work: we cannot return a PNG icon to the application, it would need to be converted to ico format, and (probably) with the various sizes and depths collated together, etc. We'd also have to hack the data returned by FindResource() & co to take these remappings into account. That could get ugly pretty quick.