mirror of
https://github.com/reactos/reactos.git
synced 2025-07-28 10:52:20 +00:00
[RSHELL]
* CMenuBand: Fix submenu creation for shell folder menus. CORE-7881 svn path=/branches/shell-experiments/; revision=62240
This commit is contained in:
parent
2b63295fea
commit
662d8363c3
1 changed files with 35 additions and 1 deletions
|
@ -1333,9 +1333,43 @@ HRESULT CMenuSFToolbar::OnCommand(WPARAM wParam, LPARAM lParam, LRESULT *theResu
|
|||
|
||||
HRESULT CMenuSFToolbar::PopupItem(UINT uItem)
|
||||
{
|
||||
HRESULT hr;
|
||||
UINT uId;
|
||||
UINT uIdAncestor;
|
||||
DWORD flags;
|
||||
int index;
|
||||
CComPtr<IShellMenuCallback> psmc;
|
||||
CComPtr<IShellMenu> shellMenu;
|
||||
HRESULT hr = m_menuBand->CallCBWithPidl(GetPidlFromId(uItem, &index), SMC_GETOBJECT, (WPARAM) &IID_IShellMenu, (LPARAM) &shellMenu);
|
||||
|
||||
LPITEMIDLIST pidl = GetPidlFromId(uItem, &index);
|
||||
|
||||
if (!pidl)
|
||||
return E_FAIL;
|
||||
|
||||
#ifndef USE_BUILTIN_MENUBAND
|
||||
hr = CoCreateInstance(CLSID_MenuBand,
|
||||
NULL,
|
||||
CLSCTX_INPROC_SERVER,
|
||||
IID_PPV_ARG(IShellMenu, &pShellMenu));
|
||||
#else
|
||||
hr = CMenuBand_Constructor(IID_PPV_ARG(IShellMenu, &shellMenu));
|
||||
#endif
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
m_menuBand->GetMenuInfo(&psmc, &uId, &uIdAncestor, &flags);
|
||||
|
||||
// FIXME: not sure waht to use as uId/uIdAncestor here
|
||||
hr = shellMenu->Initialize(psmc, 0, uId, SMINIT_VERTICAL);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
CComPtr<IShellFolder> childFolder;
|
||||
hr = m_shellFolder->BindToObject(pidl, NULL, IID_PPV_ARG(IShellFolder, &childFolder));
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
hr = shellMenu->SetShellFolder(childFolder, NULL, NULL, 0);
|
||||
if (FAILED(hr))
|
||||
return hr;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue