mirror of
https://github.com/reactos/reactos.git
synced 2025-07-30 08:41:41 +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;
|
||||
}
|
||||
|
||||
#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)
|
||||
{
|
||||
HTREEITEM selected_item;
|
||||
|
@ -643,14 +677,7 @@ static LRESULT BrsFolder_Treeview_Keydown(browse_info *info, LPNMTVKEYDOWN keydo
|
|||
case VK_DELETE:
|
||||
{
|
||||
#ifdef __REACTOS__
|
||||
/*********************************************************
|
||||
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.
|
||||
*********************************************************/
|
||||
BrsFolder_Delete(info, selected_item);
|
||||
#else
|
||||
const ITEMIDLIST *item_id;
|
||||
ISFHelper *psfhlp;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue