Module: wine Branch: master Commit: d9c4f506fd10dc59807790a51e78a2cb5579b9a5 URL: https://gitlab.winehq.org/wine/wine/-/commit/d9c4f506fd10dc59807790a51e78a2c...
Author: Zebediah Figura zfigura@codeweavers.com Date: Fri Feb 16 21:48:04 2024 -0600
shell32: Always use IContextMenu::InvokeCommand() when selecting an item from the context menu.
This reverts one of the changes included in d30dfd24d6ab2f52bb4f29aee59e75238c648fc4.
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().
---
dlls/shell32/shlview.c | 13 ------------- 1 file changed, 13 deletions(-)
diff --git a/dlls/shell32/shlview.c b/dlls/shell32/shlview.c index bb1119355ab..abe13981df1 100644 --- a/dlls/shell32/shlview.c +++ b/dlls/shell32/shlview.c @@ -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); }