mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 02:05:50 +00:00
[SHELL32] Implement Move To Folder (#3056)
- Add context menu item "Mo&ve to folder..." and implement the action. - Implement the "Mo&ve to folder..." menu item of "Edit" menu of Explorer. CORE-11132
This commit is contained in:
parent
679c95597c
commit
46ff964e22
45 changed files with 590 additions and 9 deletions
|
@ -49,6 +49,7 @@ struct _StaticInvokeCommandMap_
|
|||
{ "properties", FCIDM_SHVIEW_PROPERTIES},
|
||||
{ "rename", FCIDM_SHVIEW_RENAME},
|
||||
{ "copyto", FCIDM_SHVIEW_COPYTO },
|
||||
{ "moveto", FCIDM_SHVIEW_MOVETO },
|
||||
};
|
||||
|
||||
class CDefaultContextMenu :
|
||||
|
@ -95,7 +96,7 @@ class CDefaultContextMenu :
|
|||
HRESULT DoRename(LPCMINVOKECOMMANDINFO lpcmi);
|
||||
HRESULT DoProperties(LPCMINVOKECOMMANDINFO lpcmi);
|
||||
HRESULT DoCreateNewFolder(LPCMINVOKECOMMANDINFO lpici);
|
||||
HRESULT DoCopyToFolder(LPCMINVOKECOMMANDINFO lpici);
|
||||
HRESULT DoCopyToMoveToFolder(LPCMINVOKECOMMANDINFO lpici, BOOL bCopy);
|
||||
HRESULT InvokeShellExt(LPCMINVOKECOMMANDINFO lpcmi);
|
||||
HRESULT InvokeRegVerb(LPCMINVOKECOMMANDINFO lpcmi);
|
||||
DWORD BrowserFlagsFromVerb(LPCMINVOKECOMMANDINFO lpcmi, PStaticShellEntry pEntry);
|
||||
|
@ -895,7 +896,7 @@ CDefaultContextMenu::DoProperties(
|
|||
}
|
||||
|
||||
HRESULT
|
||||
CDefaultContextMenu::DoCopyToFolder(LPCMINVOKECOMMANDINFO lpici)
|
||||
CDefaultContextMenu::DoCopyToMoveToFolder(LPCMINVOKECOMMANDINFO lpici, BOOL bCopy)
|
||||
{
|
||||
HRESULT hr = E_FAIL;
|
||||
if (!m_pDataObj)
|
||||
|
@ -905,7 +906,12 @@ CDefaultContextMenu::DoCopyToFolder(LPCMINVOKECOMMANDINFO lpici)
|
|||
}
|
||||
|
||||
CComPtr<IContextMenu> pContextMenu;
|
||||
hr = SHCoCreateInstance(NULL, &CLSID_CopyToMenu, NULL, IID_PPV_ARG(IContextMenu, &pContextMenu));
|
||||
if (bCopy)
|
||||
hr = SHCoCreateInstance(NULL, &CLSID_CopyToMenu, NULL,
|
||||
IID_PPV_ARG(IContextMenu, &pContextMenu));
|
||||
else
|
||||
hr = SHCoCreateInstance(NULL, &CLSID_MoveToMenu, NULL,
|
||||
IID_PPV_ARG(IContextMenu, &pContextMenu));
|
||||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
|
@ -918,7 +924,10 @@ CDefaultContextMenu::DoCopyToFolder(LPCMINVOKECOMMANDINFO lpici)
|
|||
if (FAILED_UNEXPECTEDLY(hr))
|
||||
return hr;
|
||||
|
||||
lpici->lpVerb = "copyto";
|
||||
if (bCopy)
|
||||
lpici->lpVerb = "copyto";
|
||||
else
|
||||
lpici->lpVerb = "moveto";
|
||||
|
||||
return pContextMenu->InvokeCommand(lpici);
|
||||
}
|
||||
|
@ -1279,7 +1288,10 @@ CDefaultContextMenu::InvokeCommand(
|
|||
Result = DoCreateNewFolder(&LocalInvokeInfo);
|
||||
break;
|
||||
case FCIDM_SHVIEW_COPYTO:
|
||||
Result = DoCopyToFolder(&LocalInvokeInfo);
|
||||
Result = DoCopyToMoveToFolder(&LocalInvokeInfo, TRUE);
|
||||
break;
|
||||
case FCIDM_SHVIEW_MOVETO:
|
||||
Result = DoCopyToMoveToFolder(&LocalInvokeInfo, FALSE);
|
||||
break;
|
||||
default:
|
||||
Result = E_INVALIDARG;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue