[0.4.11][SHELL32] Control panel context menu semantic bugfix (#4078) CORE-17855

Fix ported back from 0.4.15-dev-3396-g 83335d3a81
This commit is contained in:
Joachim Henze 2022-01-26 12:49:22 +01:00
parent 423377e71c
commit acf3235c2f

View file

@ -676,9 +676,9 @@ HRESULT WINAPI CCPLItemMenu::QueryContextMenu(
UINT idCmdLast, UINT idCmdLast,
UINT uFlags) UINT uFlags)
{ {
_InsertMenuItemW(hMenu, indexMenu++, TRUE, IDS_OPEN, MFT_STRING, MAKEINTRESOURCEW(IDS_OPEN), MFS_DEFAULT); _InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst, MFT_STRING, MAKEINTRESOURCEW(IDS_OPEN), MFS_DEFAULT);
_InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + 1, MFT_SEPARATOR, NULL, MFS_ENABLED); _InsertMenuItemW(hMenu, indexMenu++, TRUE, IDC_STATIC, MFT_SEPARATOR, NULL, MFS_ENABLED);
_InsertMenuItemW(hMenu, indexMenu++, TRUE, IDS_CREATELINK, MFT_STRING, MAKEINTRESOURCEW(IDS_CREATELINK), MFS_ENABLED); _InsertMenuItemW(hMenu, indexMenu++, TRUE, idCmdFirst + 1, MFT_STRING, MAKEINTRESOURCEW(IDS_CREATELINK), MFS_ENABLED);
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 2); return MAKE_HRESULT(SEVERITY_SUCCESS, 0, 2);
} }
@ -699,7 +699,7 @@ HRESULT WINAPI CCPLItemMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n", this, lpcmi, lpcmi->lpVerb, lpcmi->hwnd); TRACE("(%p)->(invcom=%p verb=%p wnd=%p)\n", this, lpcmi, lpcmi->lpVerb, lpcmi->hwnd);
if (lpcmi->lpVerb == MAKEINTRESOURCEA(IDS_OPEN)) //FIXME if (lpcmi->lpVerb == MAKEINTRESOURCEA(0))
{ {
/* Hardcode the command here; Executing a cpl file would be fine but we also need to run things like console.dll */ /* Hardcode the command here; Executing a cpl file would be fine but we also need to run things like console.dll */
WCHAR wszParams[MAX_PATH]; WCHAR wszParams[MAX_PATH];
@ -711,7 +711,7 @@ HRESULT WINAPI CCPLItemMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
/* Note: we pass the applet name to Control_RunDLL to distinguish between multiple applets in one .cpl file */ /* Note: we pass the applet name to Control_RunDLL to distinguish between multiple applets in one .cpl file */
ShellExecuteW(NULL, NULL, wszFile, wszParams, NULL, 0); ShellExecuteW(NULL, NULL, wszFile, wszParams, NULL, 0);
} }
else if (lpcmi->lpVerb == MAKEINTRESOURCEA(IDS_CREATELINK)) //FIXME else if (lpcmi->lpVerb == MAKEINTRESOURCEA(1)) //FIXME
{ {
CComPtr<IDataObject> pDataObj; CComPtr<IDataObject> pDataObj;
LPITEMIDLIST pidl = _ILCreateControlPanel(); LPITEMIDLIST pidl = _ILCreateControlPanel();