[SHELL32] Implement the Select verb in CommDlgBrowser (#7225)

- Use Select instead of Open default menu item.
- Support CDB2GVF_NOSELECTVERB, CDB2GVF_NOINCLUDEITEM and CDB2GVF_SHOWALLFILES flags.
This commit is contained in:
Whindmar Saksit 2024-08-15 18:40:32 +02:00 committed by GitHub
parent 7d532f8792
commit d5f6b8c50b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
40 changed files with 342 additions and 12 deletions

View file

@ -876,7 +876,7 @@ CDefaultContextMenu::QueryContextMenu(
return MAKE_HRESULT(SEVERITY_SUCCESS, 0, cIds);
/* Add the default part of the menu */
HMENU hmenuDefault = LoadMenu(_AtlBaseModule.GetResourceInstance(), L"MENU_SHV_FILE");
HMENU hmenuDefault = LoadMenuW(_AtlBaseModule.GetResourceInstance(), L"MENU_SHV_FILE");
/* Remove uneeded entries */
if (!(rfg & SFGAO_CANMOVE))
@ -1260,6 +1260,13 @@ CDefaultContextMenu::BrowserFlagsFromVerb(LPCMINVOKECOMMANDINFOEX lpcmi, PStatic
else
FlagsName = L"BrowserFlags";
CComPtr<ICommDlgBrowser> pcdb;
if (SUCCEEDED(psb->QueryInterface(IID_PPV_ARG(ICommDlgBrowser, &pcdb))))
{
if (LOBYTE(GetVersion()) < 6 || FlagsName[0] == 'E')
return 0; // Don't browse in-place
}
/* Try to get the flag from the verb */
hr = StringCbPrintfW(wszKey, sizeof(wszKey), L"shell\\%s", pEntry->Verb.GetString());
if (FAILED_UNEXPECTEDLY(hr))