shell32 patches to be usable by ReactOS Explorer

Martin Fuchs martin-fuchs at gmx.net
Sun Jan 11 07:04:29 CST 2004


This patch consists of a number of changes we implemented in the ReactOS CVS tree in order to use Wine's shell32.dll implementation for ReactOS explorer. Please see the following changelog lists for the individual patch descriptions:


Ge van Geldorp <ge at gse.nl>
- Return absolute path from SHGetPathFromIDListA
- Allow SHGetPathFromIDListA to resolve items in special folders.
- shlview.c: Execute items by default using new function ShellView_OpenSelectedItems()
- Don't return executable name in double quotation marks from FindExecutable
- Since IExtractIcon::GetIconLocation returns the icon *index* (not
the resource id) and some of these indexes are hardcoded in
folders.c IExtractIconW_fnGetIconLocation() add some dummy icons
to force correct index.


Filip Navara xnavara at volny.cz
- shell32_Cs.rc: Czech translation

Preparation before moving SHGetFolderPath[AW]() into shfolder.dll:
- Moved actual code from SHGetSpecialFolderPathA to SHGetFolderPathW, adjusted and unicodified it.
- Rewrote SHGetFolderPathA to call SHGetFolderPathA.
- Rewrote SHGetSpecialFolderPath[AW] to call SHGetFolderPath[AW].


Everaldo Coelho everaldo at everaldo.com
- better locking shell icons with 4, 8 and 32 bit colors


Martin Fuchs <martin-fuchs at gmx.net>
- correct path parsing in ISF_Desktop_fnParseDisplayName()
- handle CLSID paths in ISF_MyComputer_fnParseDisplayName()
- return CLSID path in ISF_MyComputer_fnGetDisplayNameOf()
- implemented flag SEE_MASK_IDLIST for ShellExecuteEx()
- removed warning message for previously unimplemented flag SEE_MASK_INVOKEIDLIST in ShellExecuteEx()
- add a few TRACE messages to ShellExecuteXYZ()
- SIC_IconAppend(), SIC_GetIconIndex(): use GetFullPathName() instead of PathFindFileNameA() to make icon paths unique
- fixed HCR_GetExecuteCommandExA/W() to correct ShellExecuteEx() behaviour with flag SEE_MASK_CLASSNAME set
- RenderFILENAMEA/W(): only return valid file system names
- extended CSIDL_Data for missing CSIDL_... definitions
- introduced IDL type PT_RAS_FOLDER for "Connections" shell folder 
- implementation of shell link resolving for ShellExecuteXYZ() and IExtractIcon:
  _ResolveShortCut(), IShellLink_ConstructFromFile(), I...XYZ...fnGetUIObjectOf(),
  _PidlGeticonLocationA/W(), IShellLinkA/W_fn...(), IExtractIconW_fnGetIconLocation()
- CreateStreamOnFile(): use flag FILE_SHARE_READ for opening OLE stream files
- introduced optimized internal functions SHELL_GetPathFromIDListA/W() with HRESULT return value
- SHGetPathFromIDListA/W() return now like on real Windows only real file system paths, no virtual CLSID paths.
- shres.rc, SIC_Initialize(): moved ID for document icon from invalid index 0 to 1
- SIC_Initialize(): use full path to shell32.dll for icon cache
- adjusted ExtractIconExW() to be usable with MinGW and MSVC
- ISvItemCm_fnQueryContextMenu(): corrected default menu item in shell context menus
- ISvItemCm_fnQueryContextMenu(): distinguish between Open and Explore commands
- ShellView_DoContextMenu(): activate Explore-Context menu on the desktop
- ShellView_CreateList(), SIC_Initialize(), PidlToSicIndex(): enabled transparent icons on the desktop
- SHGetDataFromIDListA/W(): corrected error handling
- I...XYZ...fnGetUIObjectOf(): better error handling
- ISF_MyComputer_fnGetDisplayNameOf(): better error handling
- AboutDlgProc(): don't link to undocumented string functions in NTDLL to be compatible with MSVC and MinGW
- SHSimpleIDListFromPathA(): don't link to undocumented string functions in NTDLL to be compatible with MSVC and MinGW
- SHGetDataFromIDListA/W(): handle drives when retrieving file attributes
- _ILCreateFolder, _ILCreateValue(): added missing type casts from DWORD to WORD
- shell32_XY.rc: corrected menu item ids FCIDM_SHVIEW_OPEN and FCIDM_SHVIEW_EXPLORE
- DllMain(): get full path and name to shell32.dll for IExtractIconW_fnGetIconLocation(); directly call InitCommonControlsEx()
- pseudo-implementation for IPersistFile_fnIsDirty()
- IShellLinkA/W_fnGetPath(): added FIXME
- shellink.c: corrected SCF_UNICODE constant
- _FS_ProcessDisplayFilename(): hide configured file extensions in file system shell folders and on the desktop
- ISF_Desktop_fnParseDisplayName(): correct file path parsing on the desktop
- SHELL_FindExecutable(); use PathFindExtensionA() instead if strrchr()
- SHELL32_CoCreateInitSFEx(): improved error handling
- SHMapPIDLToSystemImageListIndex(): improved error handling
- SHELL_FindExecutable(): use PathFindExtension() instead of strrchr()
- folders.c: include header files "config.h" and "port.h" for strcasecmp()
- shellink.c: corrected shell link saving
- IShellLink: implemented IPersistFile::IsDirty()
- ShellExecuteExA(), ISF_MyComputer_fnGetDisplayNameOf(): handle shell links to virtual folders
- read in shell links to control panel applets and enable ShellEcecute() to launch them
- Implementation of control panel folder
- partial implementation of file system folder execution in ShellExecute()
- ExitWindowsDialog(): implemented shutdown request for OS versions NT and better
- implementation of RestartDialog() and RestartDialogEx()
- SHELL32_GetItemAttributes(): implemented SFGAO_LINK
- corrected definition of PathYetAnotherMakeUniqueName()
- implemented SHGetRealIDL()
- fixed allocation length in RenderFILENAMEW()
- SHBindToParent(): call QueryInterface for Desktop
- ShellExecuteExA32(): expand environment strings


I splitted the patch into three parts because of its size:

shell32.patch.bz2: patches for the C code
shell32-rc-icons.patch.bz2: patch file for shres.rc with new icons
shell32-rc.patch.bz2: other resource file changes


Alexandre, I know this patch conflicts somewhat with that of Marcelo Duarte.
May be it's easier first to apply our changes before merging in his W->A call optimizations.


-- 
Martin Fuchs
martin-fuchs at gmx.net
-------------- next part --------------
A non-text attachment was scrubbed...
Name: shell32-rc-icons.patch.bz2
Type: application/octet-stream
Size: 52738 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20040111/00787299/shell32-rc-icons.patch.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: shell32.patch.bz2
Type: application/octet-stream
Size: 36458 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20040111/00787299/shell32.patch.obj
-------------- next part --------------
A non-text attachment was scrubbed...
Name: shell32-rc.patch.bz2
Type: application/octet-stream
Size: 3505 bytes
Desc: not available
Url : http://www.winehq.org/pipermail/wine-patches/attachments/20040111/00787299/shell32-rc.patch.obj


More information about the wine-patches mailing list