shell32: Always use IContextMenu::InvokeCommand() when selecting an item from the context menu.

This reverts one of the changes included in d30dfd24d6.

Relying on FCIDM_SHVIEW_OPEN snoops into the internals of IContextMenu for no
good reason.

While I haven't tested whether ICommDlgBrowser::OnDefaultCommand() is triggered
in this case, the documentation states that it is "called when a user
double-clicks in the view or presses the ENTER key"; this is neither scenario.

Simply let the context menu call ShellExecuteEx().
This commit is contained in:
Zebediah Figura 2024-02-16 21:48:04 -06:00 committed by Alexandre Julliard
parent f27e4a4a29
commit d9c4f506fd

View file

@ -1055,24 +1055,11 @@ static void ShellView_DoContextMenu(IShellViewImpl * This, WORD x, WORD y, BOOL
if(uCommand > 0)
{
TRACE("-- uCommand=%u\n", uCommand);
if (uCommand==FCIDM_SHVIEW_OPEN && IsInCommDlg(This))
{
TRACE("-- dlg: OnDefaultCommand\n");
if (OnDefaultCommand(This) != S_OK)
{
ShellView_OpenSelectedItems(This);
}
}
else
{
TRACE("-- explore -- invoke command\n");
ZeroMemory(&cmi, sizeof(cmi));
cmi.cbSize = sizeof(cmi);
cmi.hwnd = This->hWndParent; /* this window has to answer CWM_GETISHELLBROWSER */
cmi.lpVerb = MAKEINTRESOURCEA(uCommand);
IContextMenu_InvokeCommand(pContextMenu, &cmi);
}
}
DestroyMenu(hMenu);
}