if (FAILED_UNEXPECTEDLY(hr))
return hr;
- IUnknown_SetSite(m_pCM, (IShellView *)this);
-
HMENU hmenu = CreatePopupMenu();
hr = m_pCM->QueryContextMenu(hmenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, 0);
if (FAILED_UNEXPECTEDLY(hResult))
goto cleanup;
- IUnknown_SetSite(m_pCM, (IShellView *)this);
-
hResult = m_pCM->QueryContextMenu(hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, CMF_DEFAULTONLY);
if (FAILED_UNEXPECTEDLY(hResult))
goto cleanup;
if (FAILED_UNEXPECTEDLY(hResult))
goto cleanup;
- IUnknown_SetSite(m_pCM, (IShellView *)this);
-
/* Use 1 as the first id as we want 0 the mean that the user canceled the menu */
hResult = m_pCM->QueryContextMenu(m_hContextMenu, 0, CONTEXT_MENU_BASE_ID, FCIDM_SHVIEWLAST, CMF_NORMAL);
if (FAILED_UNEXPECTEDLY(hResult))
if (FAILED_UNEXPECTEDLY( hResult))
goto cleanup;
- IUnknown_SetSite(m_pCM, (IShellView *)this);
-
hResult = m_pCM->QueryContextMenu(hMenu, 0, FCIDM_SHVIEWFIRST, FCIDM_SHVIEWLAST, CMF_NORMAL);
if (FAILED_UNEXPECTEDLY( hResult))
goto cleanup;
if (FAILED_UNEXPECTEDLY(hr))
return hr;
+ IUnknown_SetSite(*((IUnknown**)ppvOut), (IShellView *)this);
}
else if (IsEqualIID(riid, IID_IDispatch))
{
hr = m_pSFParent->GetUIObjectOf(m_hWnd, m_cidl, m_apidl, riid, 0, ppvOut);
if (FAILED_UNEXPECTEDLY(hr))
return hr;
+
+ if (IsEqualIID(riid, IID_IContextMenu))
+ IUnknown_SetSite(*((IUnknown**)ppvOut), (IShellView *)this);
+
break;
}
CDefViewBckgrndMenu::SetSite(IUnknown *pUnkSite)
{
m_site = pUnkSite;
+
+ if(m_folderCM)
+ IUnknown_SetSite(m_folderCM, pUnkSite);
+
return S_OK;
}
CDefViewBckgrndMenu::InvokeCommand(LPCMINVOKECOMMANDINFO lpcmi)
{
UINT idCmd = LOWORD(lpcmi->lpVerb);
- if(HIWORD(lpcmi->lpVerb) != 0 || idCmd < m_LastFolderCMId)
+
+ if (HIWORD(lpcmi->lpVerb) && !strcmp(lpcmi->lpVerb, CMDSTR_VIEWLISTA))
+ {
+ idCmd = FCIDM_SHVIEW_LISTVIEW;
+ }
+ else if (HIWORD(lpcmi->lpVerb) && !strcmp(lpcmi->lpVerb, CMDSTR_VIEWDETAILSA))
+ {
+ idCmd = FCIDM_SHVIEW_REPORTVIEW;
+ }
+ else if(HIWORD(lpcmi->lpVerb) != 0 || idCmd < m_LastFolderCMId)
{
return m_folderCM->InvokeCommand(lpcmi);
}
-
- /* The default part of the background menu doesn't have shifted ids so we need to convert the id offset to the real id */
- idCmd += m_idCmdFirst;
+ else
+ {
+ /* The default part of the background menu doesn't have shifted ids so we need to convert the id offset to the real id */
+ idCmd += m_idCmdFirst;
+ }
/* The commands that are handled by the def view are forwarded to it */
switch (idCmd)
{ "Print", 0 }, // Unimplemented
{ "Preview", 0 }, // Unimplemented
{ "Open", FCIDM_SHVIEW_OPEN },
- { CMDSTR_NEWFOLDERA, FCIDM_SHVIEW_NEWFOLDER },
- { CMDSTR_VIEWLISTA, FCIDM_SHVIEW_LISTVIEW },
- { CMDSTR_VIEWDETAILSA, FCIDM_SHVIEW_REPORTVIEW }
+ { CMDSTR_NEWFOLDERA, FCIDM_SHVIEW_NEWFOLDER }
};