Difference between revisions of "Shell status"
m |
|||
Line 9: | Line 9: | ||
| Core services || | | Core services || | ||
'''Core functions of the shell'''<br> | '''Core functions of the shell'''<br> | ||
− | [[File:Symbol neutral vote.png]] ShellExecuteExW<br> | + | [[File:Symbol neutral vote.png]] ShellExecuteExW: I think wine's implementation is completely backwards. This should execute items on the shell namespace<br> |
− | [[File:Symbol neutral vote.png]] SHChangeNotifyRegister, SHChangeNotifyDeregister, SHChangeNotify<br> | + | [[File:Symbol neutral vote.png]] SHChangeNotifyRegister, SHChangeNotifyDeregister, SHChangeNotify: Many things need work here. Windows use a worker thread for some reason, we leak handles and support for items on the desktop is *terrible* (it needs some very clever hacks that we don't have)<br> |
− | [[File:Symbol neutral vote.png]] SHFileOperationW<br> | + | [[File:Symbol neutral vote.png]] SHFileOperationW: Many edge cases are broken. Right now most copy and paste problems are bugs in this function<br> |
[[File:Symbol support vote.png]] Shell_NotifyIconW (this is a mere forwarder of the notifications to explorer. The forwarder is complete but a lot of stuff in explorer's end need work for this to seem to work properly)<br> | [[File:Symbol support vote.png]] Shell_NotifyIconW (this is a mere forwarder of the notifications to explorer. The forwarder is complete but a lot of stuff in explorer's end need work for this to seem to work properly)<br> | ||
[[File:Symbol support vote.png]] SHBrowseForFolderW<br> | [[File:Symbol support vote.png]] SHBrowseForFolderW<br> | ||
− | [[File:Symbol neutral vote.png]] Control_RunDLLW<br> | + | [[File:Symbol neutral vote.png]] Control_RunDLLW: See the failed tests to see how broken it is<br> |
− | [[File:Symbol neutral vote.png]] SHMapPIDLToSystemImageListIndex<br> | + | [[File:Symbol neutral vote.png]] SHMapPIDLToSystemImageListIndex: The way it interacts with IIconExtraction is FUBAR. Overlays support is hacked.<br> |
[[File:Symbol oppose vote.png]] SHMapIDListToImageListIndexAsync<br> | [[File:Symbol oppose vote.png]] SHMapIDListToImageListIndexAsync<br> | ||
+ | [[File:Symbol support vote.png]] CShellItem<br> | ||
+ | [[File:Symbol neutral vote.png]] CQueryAssociations: Only the documented part is implemented; More internal classes expose IQueryAssociations. It is really questionable if any of the undocumented part merits to be implemented.<br> | ||
[[File:Symbol oppose vote.png]] DAD_* functions<br> | [[File:Symbol oppose vote.png]] DAD_* functions<br> | ||
− | [[File:Symbol | + | [[File:Symbol oppose vote.png]] CDragDropHelper: Implements the visual effects that are used when dragging shell items. It is closely related to the DAD_* functions<br> |
− | |||
− | |||
[[File:Symbol oppose vote.png]] SHAppBarMessage<br> | [[File:Symbol oppose vote.png]] SHAppBarMessage<br> | ||
[[File:Symbol oppose vote.png]] OpenAs_RunDLL<br> | [[File:Symbol oppose vote.png]] OpenAs_RunDLL<br> | ||
Line 26: | Line 26: | ||
| Def namespace objects || | | Def namespace objects || | ||
'''Core objects used by the namespace components to interact with the user'''<br> | '''Core objects used by the namespace components to interact with the user'''<br> | ||
− | [[File:Symbol support vote.png]] CDefaultContextMenu (called CDefFolderMenu in windows)<br> | + | [[File:Symbol support vote.png]] CDefaultContextMenu (called CDefFolderMenu in windows): tried to implement the context menu of the cpl items in the control panel with callbacks but run into problems with ids _again_<br> |
− | [[File:Symbol support vote.png]] CDefView<br> | + | [[File:Symbol support vote.png]] CDefView: I hope webview and crap like that won't be needed and we can keep this component simple<br> |
− | [[File:Symbol neutral vote.png]] CExtractIcon<br> | + | [[File:Symbol neutral vote.png]] CExtractIcon: Its implementation and the way it interacts with the icon cache is a mess.<br> |
|- | |- | ||
| Namespace || | | Namespace || | ||
'''The components that constitute the shell namespace'''<br> | '''The components that constitute the shell namespace'''<br> | ||
− | [[File:Symbol support vote.png]] CRegFolder<br> | + | [[File:Symbol support vote.png]] CRegFolder. In windows users of this class aggregate it and let it handle IShellFolder2 first. Imo this is not needed. ParseDisplayName should support parsing user friendly names but it doesn't right now<br> |
[[File:Symbol support vote.png]] CDesktopFolder<br> | [[File:Symbol support vote.png]] CDesktopFolder<br> | ||
− | [[File:Symbol support vote.png]] CDrivesFolder<br> | + | [[File:Symbol support vote.png]] CDrivesFolder: Windows use a CMountpoint class but we do the bare minimum. I guess it is fine thins way<br> |
− | [[File:Symbol support vote.png]] CFSFolder<br> | + | [[File:Symbol support vote.png]] CFSFolder: BindToObject must be improved not to create new CFSFolder objects for complex pidls. I stupidly thought we could use _ILGetFileStructW and access the name directly. Turns out it should also accept ansi-only pidls as well(CORE-14009)<br> |
− | [[File:Symbol support vote.png]] CControlPanelFolder<br> | + | [[File:Symbol support vote.png]] CControlPanelFolder: The context menu of the cpl items should use CDefContextMenu and use callbacks to start launch the cpl (instead of having a separate implementation of the IContextMenu)<br> |
− | [[File:Symbol support vote.png]] CRecycleBinFolder<br> | + | [[File:Symbol support vote.png]] CRecycleBinFolder: Icons are unimplemented due to the stupidly complex internal architecture of the control panel implementation<br> |
− | [[File:Symbol neutral vote.png]] CNetFolder<br> | + | [[File:Symbol neutral vote.png]] CNetFolder: This is only a quick and dirty implementation so far<br> |
− | [[File:Symbol neutral vote.png]] CMergedFolder<br> | + | [[File:Symbol neutral vote.png]] CMergedFolder: pidls must never contain pointers. they can contain other pidls however<br> |
− | [[File:Symbol neutral vote.png]] CPrintersFolder<br> | + | [[File:Symbol neutral vote.png]] CPrintersFolder: lots of stuff to implement here. in windows there is a strange interaction with printui but I don't think there is any reason to implement such an interaction; the printers folder can be completely self contained and use only documented exports of printui<br> |
− | [[File:Symbol oppose vote.png]] CCDBurnFolder<br> | + | [[File:Symbol oppose vote.png]] CCDBurnFolder: do we even need this?<br> |
|- | |- | ||
| Shell menus || | | Shell menus || | ||
Line 61: | Line 61: | ||
[[File:Symbol support vote.png]] CDrvDefExt<br> | [[File:Symbol support vote.png]] CDrvDefExt<br> | ||
[[File:Symbol support vote.png]] CFolderOptions<br> | [[File:Symbol support vote.png]] CFolderOptions<br> | ||
− | [[File:Symbol oppose vote.png]] CFileSearchBand<br> | + | [[File:Symbol oppose vote.png]] CFileSearchBand: Why on earth is a IDeskBand in shell32?<br> |
[[File:Symbol oppose vote.png]] CFolderShortcut<br> | [[File:Symbol oppose vote.png]] CFolderShortcut<br> | ||
[[File:Symbol oppose vote.png]] CSendToMenu<br> | [[File:Symbol oppose vote.png]] CSendToMenu<br> | ||
[[File:Symbol oppose vote.png]] CCDBurn<br> | [[File:Symbol oppose vote.png]] CCDBurn<br> | ||
[[File:Symbol oppose vote.png]] CCopyMoveToMenu<br> | [[File:Symbol oppose vote.png]] CCopyMoveToMenu<br> | ||
− | [[File:Symbol oppose vote.png]] CStartMenuPin<br> | + | [[File:Symbol oppose vote.png]] CStartMenuPin: I think this is the IContextMenu that lets you pin stuff in the modern start menu<br> |
[[File:Symbol oppose vote.png]] CBurnAudioCDExtension<br> | [[File:Symbol oppose vote.png]] CBurnAudioCDExtension<br> | ||
|- | |- |
Revision as of 03:02, 2 January 2018
This is WIP. For now I tried to list as many parts of shell32 as possible. Note that I'm comparing ros shell with windows 2003 one here.
Current Status and Roadmap
Legend: means only bugfixes needed. means unimplemented. means that it needs lots of work, either it is too buggy or implemented in a hacky/wrong way.