return hr;
}
- CComPtr<IServiceProvider> sp;
- CComPtr<IUnknown> unk0;
- CComPtr<IDeskBar> db0, db, db1;
- if (SUCCEEDED(IUnknown_GetSite(m_subMenuParent, IID_PPV_ARG(IServiceProvider, &sp))) &&
- SUCCEEDED(sp->QueryInterface(IID_PPV_ARG(IDeskBar, &db0))) &&
- SUCCEEDED(db0->GetClient(&unk0)) &&
- SUCCEEDED(IUnknown_QueryService(unk0, SID_SMenuBandChild, IID_PPV_ARG(IDeskBar, &db))) &&
- SUCCEEDED(IUnknown_QueryService(m_site, SID_SMenuBandParent, IID_PPV_ARG(IDeskBar, &db1))))
- {
- if (fShow)
- db->SetClient(db1);
- else
- db->SetClient(NULL);
- }
-
- if (m_dwFlags & SMINIT_VERTICAL)
{
if (fShow)
hr = m_focusManager->PushMenu(this);
if (m_subMenuChild)
m_subMenuChild = NULL;
if (!punkClient)
- return S_OK;
- HRESULT hr = punkClient->QueryInterface(IID_PPV_ARG(IMenuPopup, &m_subMenuChild));
- m_trackingPopup = m_subMenuChild != NULL;
- if (!m_trackingPopup)
{
if (m_staticToolbar) m_staticToolbar->OnPopupItemChanged(NULL, -1);
if (m_SFToolbar) m_SFToolbar->OnPopupItemChanged(NULL, -1);
+ return S_OK;
}
+ HRESULT hr = punkClient->QueryInterface(IID_PPV_ARG(IMenuPopup, &m_subMenuChild));
+ m_trackingPopup = m_subMenuChild != NULL;
return hr;
}
UINT flags = TPM_VERPOSANIMATION | TPM_VERTICAL | TPM_LEFTALIGN;
m_trackingPopup = TRUE;
+ m_focusManager->PushTrackedPopup(this, popup);
if (m_menuOwner)
{
::TrackPopupMenuEx(popup, flags, x, y, m_menuOwner, ¶ms);
::TrackPopupMenuEx(popup, flags, x, y, m_topLevelWindow, ¶ms);
}
m_trackingPopup = FALSE;
+ m_focusManager->PopTrackedPopup(this, popup);
return S_OK;
}
{
HRESULT hr;
- if (changeType == VK_DOWN)
+ if (!(m_dwFlags & SMINIT_VERTICAL))
+ {
+ if (changeType == MPOS_SELECTRIGHT)
+ {
+ SendMessageW(m_menuOwner, WM_CANCELMODE, 0, 0);
+ if (m_SFToolbar && (m_hotBar == m_SFToolbar || m_hotBar == NULL))
+ {
+ DbgPrint("SF Toolbars in Horizontal menus is not implemented.\n");
+ return S_FALSE;
+ }
+ else if (m_staticToolbar && m_hotBar == m_staticToolbar)
+ {
+ hr = m_staticToolbar->ChangeHotItem(VK_DOWN);
+ if (hr == S_FALSE)
+ {
+ if (m_SFToolbar)
+ return m_SFToolbar->ChangeHotItem(VK_HOME);
+ else
+ return m_staticToolbar->ChangeHotItem(VK_HOME);
+ }
+ return hr;
+ }
+ }
+ else if (changeType == MPOS_SELECTLEFT)
+ {
+ SendMessageW(m_menuOwner, WM_CANCELMODE, 0, 0);
+ if (m_staticToolbar && (m_hotBar == m_staticToolbar || m_hotBar == NULL))
+ {
+ hr = m_staticToolbar->ChangeHotItem(VK_UP);
+ if (hr == S_FALSE)
+ {
+ if (m_SFToolbar)
+ return m_SFToolbar->ChangeHotItem(VK_END);
+ else
+ return m_staticToolbar->ChangeHotItem(VK_END);
+ }
+ return hr;
+ }
+ else if (m_SFToolbar && m_hotBar == m_SFToolbar)
+ {
+ DbgPrint("SF Toolbars in Horizontal menus is not implemented.\n");
+ return S_FALSE;
+ }
+ }
+ }
+ else if (changeType == VK_DOWN)
{
if (m_SFToolbar && (m_hotBar == m_SFToolbar || m_hotBar == NULL))
{