mirror of
https://github.com/reactos/reactos.git
synced 2025-07-23 10:53:42 +00:00
- Pass IDataObject to the folder shell extension init function
- Fixes displaying property sheet handler extension for directories such as TortoiseSVN svn path=/trunk/; revision=40828
This commit is contained in:
parent
dbc07fc66b
commit
20f87008f7
3 changed files with 22 additions and 10 deletions
|
@ -83,6 +83,7 @@ static FOLDER_VIEW_ENTRY s_Options[] =
|
||||||
};
|
};
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
HPSXA WINAPI SHCreatePropSheetExtArrayEx(HKEY hKey, LPCWSTR pszSubKey, UINT max_iface, IDataObject *pDataObj);
|
||||||
|
|
||||||
INT_PTR
|
INT_PTR
|
||||||
CALLBACK
|
CALLBACK
|
||||||
|
@ -562,15 +563,16 @@ FolderAddPropSheetPageProc(HPROPSHEETPAGE hpage, LPARAM lParam)
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
SH_ShowFolderProperties(LPWSTR pwszFolder)
|
SH_ShowFolderProperties(LPWSTR pwszFolder, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * apidl)
|
||||||
{
|
{
|
||||||
HPROPSHEETPAGE hppages[MAX_PROPERTY_SHEET_PAGE];
|
HPROPSHEETPAGE hppages[MAX_PROPERTY_SHEET_PAGE];
|
||||||
HPROPSHEETPAGE hpage;
|
HPROPSHEETPAGE hpage;
|
||||||
PROPSHEETHEADERW psh;
|
PROPSHEETHEADERW psh;
|
||||||
BOOL ret;
|
BOOL ret;
|
||||||
WCHAR szName[MAX_PATH] = {0};
|
WCHAR szName[MAX_PATH] = {0};
|
||||||
HPSXA hpsx;
|
HPSXA hpsx = NULL;
|
||||||
LPWSTR pFolderName;
|
LPWSTR pFolderName;
|
||||||
|
IDataObject * pDataObj = NULL;
|
||||||
|
|
||||||
if (!PathIsDirectoryW(pwszFolder))
|
if (!PathIsDirectoryW(pwszFolder))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -594,15 +596,25 @@ SH_ShowFolderProperties(LPWSTR pwszFolder)
|
||||||
psh.u3.phpage = hppages;
|
psh.u3.phpage = hppages;
|
||||||
psh.pszCaption = szName;
|
psh.pszCaption = szName;
|
||||||
|
|
||||||
hpsx = SHCreatePropSheetExtArray(HKEY_CLASSES_ROOT,
|
|
||||||
L"Directory",
|
|
||||||
MAX_PROPERTY_SHEET_PAGE-1);
|
|
||||||
|
|
||||||
|
if (SHCreateDataObject(pidlFolder, 1, apidl, NULL, &IID_IDataObject, (void**)&pDataObj) == S_OK)
|
||||||
|
{
|
||||||
|
hpsx = SHCreatePropSheetExtArrayEx(HKEY_CLASSES_ROOT, L"Directory", MAX_PROPERTY_SHEET_PAGE-1, pDataObj);
|
||||||
|
if (hpsx)
|
||||||
|
{
|
||||||
SHAddFromPropSheetExtArray(hpsx,
|
SHAddFromPropSheetExtArray(hpsx,
|
||||||
(LPFNADDPROPSHEETPAGE)FolderAddPropSheetPageProc,
|
(LPFNADDPROPSHEETPAGE)FolderAddPropSheetPageProc,
|
||||||
(LPARAM)&psh);
|
(LPARAM)&psh);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ret = PropertySheetW(&psh);
|
ret = PropertySheetW(&psh);
|
||||||
|
if (pDataObj)
|
||||||
|
IDataObject_Release(pDataObj);
|
||||||
|
|
||||||
|
if (hpsx)
|
||||||
|
SHDestroyPropSheetExtArray(hpsx);
|
||||||
|
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return FALSE;
|
return FALSE;
|
||||||
else
|
else
|
||||||
|
|
|
@ -807,7 +807,7 @@ SH_ShowPropertiesDialog(WCHAR *lpf, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST *api
|
||||||
|
|
||||||
if (PathIsDirectoryW(wFileName))
|
if (PathIsDirectoryW(wFileName))
|
||||||
{
|
{
|
||||||
return SH_ShowFolderProperties(wFileName);
|
return SH_ShowFolderProperties(wFileName, pidlFolder, apidl);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wcslen(wFileName) == 3)
|
if (wcslen(wFileName) == 3)
|
||||||
|
|
|
@ -235,5 +235,5 @@ HPROPSHEETPAGE SH_CreatePropertySheetPage(LPSTR resname, DLGPROC dlgproc, LPARAM
|
||||||
BOOL SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * apidl);
|
BOOL SH_ShowDriveProperties(WCHAR * drive, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * apidl);
|
||||||
BOOL SH_ShowRecycleBinProperties(WCHAR sDrive);
|
BOOL SH_ShowRecycleBinProperties(WCHAR sDrive);
|
||||||
BOOL SH_ShowPropertiesDialog(LPWSTR lpf, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * apidl);
|
BOOL SH_ShowPropertiesDialog(LPWSTR lpf, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * apidl);
|
||||||
BOOL SH_ShowFolderProperties(LPWSTR pwszFolder);
|
BOOL SH_ShowFolderProperties(LPWSTR pwszFolder, LPCITEMIDLIST pidlFolder, LPCITEMIDLIST * apidl);
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue