mirror of
https://github.com/reactos/reactos.git
synced 2025-02-25 01:39:30 +00:00
[SHELL32]
- Remove SHELL32_GetItemAttributes for good. It is never a good idea to have one function that handles many types of pidls. svn path=/trunk/; revision=68873
This commit is contained in:
parent
65caa6e448
commit
dc515c2a97
5 changed files with 39 additions and 47 deletions
|
@ -335,8 +335,14 @@ HRESULT WINAPI CControlPanelFolder::ParseDisplayName(
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (pdwAttributes && *pdwAttributes)
|
if (pdwAttributes && *pdwAttributes)
|
||||||
hr = SHELL32_GetItemAttributes(this,
|
{
|
||||||
pidlTemp, pdwAttributes);
|
if (_ILIsCPanelStruct(pidlTemp))
|
||||||
|
*pdwAttributes &= SFGAO_CANLINK;
|
||||||
|
else if (_ILIsSpecialFolder(pidlTemp))
|
||||||
|
SHELL32_GetGuidItemAttributes(this, pidlTemp, pdwAttributes);
|
||||||
|
else
|
||||||
|
ERR("Got an unkown pidl here!\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -72,6 +72,17 @@ static const shvheader DesktopSFHeader[] = {
|
||||||
|
|
||||||
#define DESKTOPSHELLVIEWCOLUMNS 5
|
#define DESKTOPSHELLVIEWCOLUMNS 5
|
||||||
|
|
||||||
|
static const DWORD dwDesktopAttributes =
|
||||||
|
SFGAO_HASSUBFOLDER | SFGAO_FILESYSTEM | SFGAO_FOLDER | SFGAO_FILESYSANCESTOR |
|
||||||
|
SFGAO_STORAGEANCESTOR | SFGAO_HASPROPSHEET | SFGAO_STORAGE | SFGAO_CANLINK;
|
||||||
|
static const DWORD dwMyComputerAttributes =
|
||||||
|
SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
|
||||||
|
SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_CANLINK;
|
||||||
|
static DWORD dwMyNetPlacesAttributes =
|
||||||
|
SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
|
||||||
|
SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_CANLINK;
|
||||||
|
|
||||||
|
|
||||||
CDesktopFolderEnum::CDesktopFolderEnum()
|
CDesktopFolderEnum::CDesktopFolderEnum()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -392,8 +403,16 @@ HRESULT WINAPI CDesktopFolder::ParseDisplayName(
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (pdwAttributes && *pdwAttributes)
|
if (pdwAttributes && *pdwAttributes)
|
||||||
hr = SHELL32_GetItemAttributes((IShellFolder *)this,
|
{
|
||||||
pidlTemp, pdwAttributes);
|
if (_ILIsMyComputer(pidlTemp))
|
||||||
|
*pdwAttributes &= dwMyComputerAttributes;
|
||||||
|
else if (_ILIsNetHood(pidlTemp))
|
||||||
|
*pdwAttributes &= dwMyNetPlacesAttributes;
|
||||||
|
else if (_ILIsSpecialFolder(pidlTemp))
|
||||||
|
SHELL32_GetGuidItemAttributes(this, pidlTemp, pdwAttributes);
|
||||||
|
else if(_ILIsFolder(pidlTemp) || _ILIsValue(pidlTemp))
|
||||||
|
SHELL32_GetFSItemAttributes(this, pidlTemp, pdwAttributes);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -504,15 +523,6 @@ HRESULT WINAPI CDesktopFolder::GetAttributesOf(
|
||||||
DWORD *rgfInOut)
|
DWORD *rgfInOut)
|
||||||
{
|
{
|
||||||
HRESULT hr = S_OK;
|
HRESULT hr = S_OK;
|
||||||
static const DWORD dwDesktopAttributes =
|
|
||||||
SFGAO_HASSUBFOLDER | SFGAO_FILESYSTEM | SFGAO_FOLDER | SFGAO_FILESYSANCESTOR |
|
|
||||||
SFGAO_STORAGEANCESTOR | SFGAO_HASPROPSHEET | SFGAO_STORAGE | SFGAO_CANLINK;
|
|
||||||
static const DWORD dwMyComputerAttributes =
|
|
||||||
SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
|
|
||||||
SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_CANLINK;
|
|
||||||
static DWORD dwMyNetPlacesAttributes =
|
|
||||||
SFGAO_CANRENAME | SFGAO_CANDELETE | SFGAO_HASPROPSHEET | SFGAO_DROPTARGET |
|
|
||||||
SFGAO_FILESYSANCESTOR | SFGAO_FOLDER | SFGAO_HASSUBFOLDER | SFGAO_CANLINK;
|
|
||||||
|
|
||||||
TRACE("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
|
TRACE("(%p)->(cidl=%d apidl=%p mask=%p (0x%08x))\n",
|
||||||
this, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
|
this, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
|
||||||
|
@ -540,7 +550,7 @@ HRESULT WINAPI CDesktopFolder::GetAttributesOf(
|
||||||
else if (_ILIsSpecialFolder(apidl[i]))
|
else if (_ILIsSpecialFolder(apidl[i]))
|
||||||
SHELL32_GetGuidItemAttributes(this, apidl[i], rgfInOut);
|
SHELL32_GetGuidItemAttributes(this, apidl[i], rgfInOut);
|
||||||
else if(_ILIsFolder(apidl[i]) || _ILIsValue(apidl[i]))
|
else if(_ILIsFolder(apidl[i]) || _ILIsValue(apidl[i]))
|
||||||
SHELL32_GetItemAttributes(this, apidl[i], rgfInOut);
|
SHELL32_GetFSItemAttributes(this, apidl[i], rgfInOut);
|
||||||
else
|
else
|
||||||
ERR("Got an unknown pidl type!!!\n");
|
ERR("Got an unknown pidl type!!!\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -234,10 +234,16 @@ HRESULT WINAPI CDrivesFolder::ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLEST
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (pdwAttributes && *pdwAttributes)
|
|
||||||
SHELL32_GetItemAttributes (this,
|
|
||||||
pidlTemp, pdwAttributes);
|
|
||||||
hr = S_OK;
|
hr = S_OK;
|
||||||
|
if (pdwAttributes && *pdwAttributes)
|
||||||
|
{
|
||||||
|
if (_ILIsCPanelStruct(pidlTemp))
|
||||||
|
*pdwAttributes &= SFGAO_CANLINK;
|
||||||
|
else if (_ILIsSpecialFolder(pidlTemp))
|
||||||
|
SHELL32_GetGuidItemAttributes(this, pidlTemp, pdwAttributes);
|
||||||
|
else
|
||||||
|
ERR("Got an unkown pidl here!\n");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
*ppidl = pidlTemp;
|
*ppidl = pidlTemp;
|
||||||
|
|
|
@ -39,7 +39,6 @@ typedef struct {
|
||||||
LPCWSTR GetNextElementW (LPCWSTR pszNext, LPWSTR pszOut, DWORD dwOut);
|
LPCWSTR GetNextElementW (LPCWSTR pszNext, LPWSTR pszOut, DWORD dwOut);
|
||||||
HRESULT SHELL32_ParseNextElement (IShellFolder2 * psf, HWND hwndOwner, LPBC pbc, LPITEMIDLIST * pidlInOut,
|
HRESULT SHELL32_ParseNextElement (IShellFolder2 * psf, HWND hwndOwner, LPBC pbc, LPITEMIDLIST * pidlInOut,
|
||||||
LPOLESTR szNext, DWORD * pEaten, DWORD * pdwAttributes);
|
LPOLESTR szNext, DWORD * pEaten, DWORD * pdwAttributes);
|
||||||
HRESULT SHELL32_GetItemAttributes (IShellFolder * psf, LPCITEMIDLIST pidl, LPDWORD pdwAttributes);
|
|
||||||
HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf, LPCITEMIDLIST pidl, DWORD dwFlags, LPWSTR szOut,
|
HRESULT SHELL32_GetDisplayNameOfChild (IShellFolder2 * psf, LPCITEMIDLIST pidl, DWORD dwFlags, LPWSTR szOut,
|
||||||
DWORD dwOutLen);
|
DWORD dwOutLen);
|
||||||
|
|
||||||
|
|
|
@ -588,35 +588,6 @@ HRESULT SHELL32_GetFSItemAttributes(IShellFolder * psf, LPCITEMIDLIST pidl, LPDW
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT SHELL32_GetItemAttributes (IShellFolder * psf, LPCITEMIDLIST pidl, LPDWORD pdwAttributes)
|
|
||||||
{
|
|
||||||
TRACE ("0x%08x\n", *pdwAttributes);
|
|
||||||
|
|
||||||
if (*pdwAttributes & ~dwSupportedAttr)
|
|
||||||
{
|
|
||||||
WARN ("attributes 0x%08x not implemented\n", (*pdwAttributes & ~dwSupportedAttr));
|
|
||||||
*pdwAttributes &= dwSupportedAttr;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (_ILIsSpecialFolder(pidl))
|
|
||||||
{
|
|
||||||
return SHELL32_GetGuidItemAttributes(psf, pidl, pdwAttributes);
|
|
||||||
}
|
|
||||||
else if(_ILIsFolder(pidl) || _ILIsValue(pidl))
|
|
||||||
{
|
|
||||||
return SHELL32_GetFSItemAttributes(psf, pidl, pdwAttributes);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Set common attributes */
|
|
||||||
ERR("We got a pidl that is neither a guid or an FS item!!! Type=0x%x\n",pidl->mkid.abID[0]);
|
|
||||||
*pdwAttributes &= SFGAO_CANLINK;
|
|
||||||
}
|
|
||||||
|
|
||||||
TRACE ("-- 0x%08x\n", *pdwAttributes);
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* SHELL32_CompareIDs
|
* SHELL32_CompareIDs
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in a new issue