Module: wine Branch: master Commit: 92246095890d4e7fff2d6bcdf372c99772663660 URL: http://source.winehq.org/git/wine.git/?a=commit;h=92246095890d4e7fff2d6bcdf3...
Author: Aric Stewart aric@codeweavers.com Date: Fri Jun 26 17:01:08 2009 +0900
shell32: Handle shell: urls internal in ParseDisplayName instead of passing them to shdocvw.
---
dlls/shell32/shfldr_desktop.c | 14 +++++++++++++- 1 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/dlls/shell32/shfldr_desktop.c b/dlls/shell32/shfldr_desktop.c index c9b7412..a08bb41 100644 --- a/dlls/shell32/shfldr_desktop.c +++ b/dlls/shell32/shfldr_desktop.c @@ -187,7 +187,19 @@ static HRESULT WINAPI ISF_Desktop_fnParseDisplayName (IShellFolder2 * iface, } else if (strchrW(lpszDisplayName,':')) { - return IEParseDisplayNameWithBCW(CP_ACP,lpszDisplayName,pbc,ppidl); + PARSEDURLW urldata; + + urldata.cbSize = sizeof(urldata); + ParseURLW(lpszDisplayName,&urldata); + + if (urldata.nScheme == URL_SCHEME_SHELL) /* handle shell: urls */ + { + TRACE ("-- shell url: %s\n", debugstr_w(urldata.pszSuffix)); + SHCLSIDFromStringW (urldata.pszSuffix+2, &clsid); + pidlTemp = _ILCreateGuid (PT_GUID, &clsid); + } + else + return IEParseDisplayNameWithBCW(CP_ACP,lpszDisplayName,pbc,ppidl); } else {