mirror of
https://github.com/reactos/reactos.git
synced 2025-08-01 19:33:23 +00:00
[SHELL32] Implement VK_DELETE on SHBrowseForFolder (#2661)
Enable Del/Delete key to delete the selected folder in "Browse for Folder" dialog. You can use https://jira.reactos.org/secure/attachment/40118/getfolder.zip as a test program. CORE-7592
This commit is contained in:
parent
2391e31cf0
commit
771457f37f
1 changed files with 35 additions and 8 deletions
|
@ -625,6 +625,40 @@ static HRESULT BrsFolder_Rename(browse_info *info, HTREEITEM rename)
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef __REACTOS__
|
||||||
|
static void
|
||||||
|
BrsFolder_Delete(browse_info *info, HTREEITEM selected_item)
|
||||||
|
{
|
||||||
|
TV_ITEMW item;
|
||||||
|
TV_ITEMDATA *item_data;
|
||||||
|
SHFILEOPSTRUCTW fileop = { info->hwndTreeView };
|
||||||
|
WCHAR szzFrom[MAX_PATH + 1];
|
||||||
|
|
||||||
|
/* get item_data */
|
||||||
|
item.mask = TVIF_HANDLE | TVIF_PARAM;
|
||||||
|
item.hItem = selected_item;
|
||||||
|
if (!SendMessageW(info->hwndTreeView, TVM_GETITEMW, 0, (LPARAM)&item))
|
||||||
|
{
|
||||||
|
ERR("TVM_GETITEMW failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
item_data = (TV_ITEMDATA *)item.lParam;
|
||||||
|
|
||||||
|
/* get the path */
|
||||||
|
if (!SHGetPathFromIDListW(item_data->lpifq, szzFrom))
|
||||||
|
{
|
||||||
|
ERR("SHGetPathFromIDListW failed\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
szzFrom[lstrlenW(szzFrom) + 1] = 0; /* double NULL-terminated */
|
||||||
|
fileop.pFrom = szzFrom;
|
||||||
|
|
||||||
|
/* delete folder */
|
||||||
|
fileop.fFlags = FOF_ALLOWUNDO;
|
||||||
|
fileop.wFunc = FO_DELETE;
|
||||||
|
SHFileOperationW(&fileop);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
static LRESULT BrsFolder_Treeview_Keydown(browse_info *info, LPNMTVKEYDOWN keydown)
|
static LRESULT BrsFolder_Treeview_Keydown(browse_info *info, LPNMTVKEYDOWN keydown)
|
||||||
{
|
{
|
||||||
HTREEITEM selected_item;
|
HTREEITEM selected_item;
|
||||||
|
@ -643,14 +677,7 @@ static LRESULT BrsFolder_Treeview_Keydown(browse_info *info, LPNMTVKEYDOWN keydo
|
||||||
case VK_DELETE:
|
case VK_DELETE:
|
||||||
{
|
{
|
||||||
#ifdef __REACTOS__
|
#ifdef __REACTOS__
|
||||||
/*********************************************************
|
BrsFolder_Delete(info, selected_item);
|
||||||
FIXME: Add a proper alternative implementation for ReactOS
|
|
||||||
|
|
||||||
NOTES: Wine makes use of the ISFHelper interface, which we
|
|
||||||
don't have in ReactOS.
|
|
||||||
It's defined in dlls/shell32/shellfolder.h and implemented
|
|
||||||
in dlls/shell32/shfldr_fs.c on Wine's side.
|
|
||||||
*********************************************************/
|
|
||||||
#else
|
#else
|
||||||
const ITEMIDLIST *item_id;
|
const ITEMIDLIST *item_id;
|
||||||
ISFHelper *psfhlp;
|
ISFHelper *psfhlp;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue