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
|
||||
{
|
||||
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
|
||||
|
||||
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()
|
||||
{
|
||||
}
|
||||
|
@ -392,8 +403,16 @@ HRESULT WINAPI CDesktopFolder::ParseDisplayName(
|
|||
else
|
||||
{
|
||||
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)
|
||||
{
|
||||
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",
|
||||
this, cidl, apidl, rgfInOut, rgfInOut ? *rgfInOut : 0);
|
||||
|
@ -540,7 +550,7 @@ HRESULT WINAPI CDesktopFolder::GetAttributesOf(
|
|||
else if (_ILIsSpecialFolder(apidl[i]))
|
||||
SHELL32_GetGuidItemAttributes(this, apidl[i], rgfInOut);
|
||||
else if(_ILIsFolder(apidl[i]) || _ILIsValue(apidl[i]))
|
||||
SHELL32_GetItemAttributes(this, apidl[i], rgfInOut);
|
||||
SHELL32_GetFSItemAttributes(this, apidl[i], rgfInOut);
|
||||
else
|
||||
ERR("Got an unknown pidl type!!!\n");
|
||||
}
|
||||
|
|
|
@ -234,10 +234,16 @@ HRESULT WINAPI CDrivesFolder::ParseDisplayName(HWND hwndOwner, LPBC pbc, LPOLEST
|
|||
}
|
||||
else
|
||||
{
|
||||
if (pdwAttributes && *pdwAttributes)
|
||||
SHELL32_GetItemAttributes (this,
|
||||
pidlTemp, pdwAttributes);
|
||||
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;
|
||||
|
|
|
@ -39,7 +39,6 @@ typedef struct {
|
|||
LPCWSTR GetNextElementW (LPCWSTR pszNext, LPWSTR pszOut, DWORD dwOut);
|
||||
HRESULT SHELL32_ParseNextElement (IShellFolder2 * psf, HWND hwndOwner, LPBC pbc, LPITEMIDLIST * pidlInOut,
|
||||
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,
|
||||
DWORD dwOutLen);
|
||||
|
||||
|
|
|
@ -588,35 +588,6 @@ HRESULT SHELL32_GetFSItemAttributes(IShellFolder * psf, LPCITEMIDLIST pidl, LPDW
|
|||
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
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue