From d56e507e9542e3a6c645e454923b1abf8a2685bb Mon Sep 17 00:00:00 2001 From: Katayama Hirofumi MZ Date: Mon, 27 May 2024 07:01:51 +0900 Subject: [PATCH] [SHELL32] CDefView: Implement SFVM_GETCOMMANDIR callback (#6941) Implementing missing folder view callbacks... JIRA issue: CORE-19616 - In CDefView::InvokeContextMenuCommand, call SFVM_GETCOMMANDDIR callback and store the directory into CMINVOKECOMMANDINFOEX structure. --- dll/win32/shell32/CDefView.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dll/win32/shell32/CDefView.cpp b/dll/win32/shell32/CDefView.cpp index a88b9de9952..93afb746349 100644 --- a/dll/win32/shell32/CDefView.cpp +++ b/dll/win32/shell32/CDefView.cpp @@ -1582,6 +1582,17 @@ HRESULT CDefView::InvokeContextMenuCommand(CComPtr& pCM, LPCSTR lp cmi.ptInvoke = *pt; } + WCHAR szDirW[MAX_PATH] = L""; + CHAR szDirA[MAX_PATH]; + if (SUCCEEDED(_DoFolderViewCB(SFVM_GETCOMMANDDIR, _countof(szDirW), (LPARAM)szDirW)) && + *szDirW != UNICODE_NULL) + { + SHUnicodeToAnsi(szDirW, szDirA, _countof(szDirA)); + cmi.fMask |= CMIC_MASK_UNICODE; + cmi.lpDirectory = szDirA; + cmi.lpDirectoryW = szDirW; + } + HRESULT hr = pCM->InvokeCommand((LPCMINVOKECOMMANDINFO)&cmi); // Most of our callers will do this, but if they would forget (File menu!) IUnknown_SetSite(pCM, NULL);