Author: dquintana
Date: Tue Feb 18 11:05:20 2014
New Revision: 62240

URL: http://svn.reactos.org/svn/reactos?rev=62240&view=rev
Log:
[RSHELL]
* CMenuBand: Fix submenu creation for shell folder menus.
CORE-7881

Modified:
    branches/shell-experiments/base/shell/rshell/CMenuBand.cpp

Modified: branches/shell-experiments/base/shell/rshell/CMenuBand.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/base/shell/rshell/CMenuBand.cpp?rev=62240&r1=62239&r2=62240&view=diff
==============================================================================
--- branches/shell-experiments/base/shell/rshell/CMenuBand.cpp  [iso-8859-1] 
(original)
+++ branches/shell-experiments/base/shell/rshell/CMenuBand.cpp  [iso-8859-1] 
Tue Feb 18 11:05:20 2014
@@ -1333,9 +1333,43 @@
 
 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;
 


Reply via email to