- CMenuDeskBar: Implement showing a shadow. Implement closing the menu when it loses focus (this only works with the stock menu band for now)

svn path=/branches/shell-experiments/; revision=62225
This commit is contained in:
Giannis Adamopoulos 2014-02-17 10:42:52 +00:00
parent dc404583fd
commit d29f9dcfef

View file

@ -127,7 +127,7 @@ public:
DECLARE_PROTECT_FINAL_CONSTRUCT() DECLARE_PROTECT_FINAL_CONSTRUCT()
#if !WRAP_LOG #if !WRAP_LOG
DECLARE_WND_CLASS_EX(_T("BaseBar"), 0, COLOR_3DFACE) DECLARE_WND_CLASS_EX(_T("BaseBar"), CS_SAVEBITS | CS_DROPSHADOW, COLOR_3DFACE)
BEGIN_MSG_MAP(CMenuDeskBar) BEGIN_MSG_MAP(CMenuDeskBar)
MESSAGE_HANDLER(WM_SIZE, OnSize) MESSAGE_HANDLER(WM_SIZE, OnSize)
@ -777,11 +777,7 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::Popup(POINTL *ppt, RECTL *prcExclude, MP
BOOL bHandled; BOOL bHandled;
OnSize(WM_SIZE, 0, 0, bHandled); OnSize(WM_SIZE, 0, 0, bHandled);
hr = m_Client->QueryInterface(IID_PPV_ARG(IInputObject, &io)); UIActivateIO(TRUE, NULL);
if (FAILED(hr))
return hr;
io->UIActivateIO(TRUE, NULL);
return S_OK; return S_OK;
} }
@ -832,6 +828,23 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::GetBitmap(THIS_ HBITMAP* phBitmap)
HRESULT STDMETHODCALLTYPE CMenuDeskBar::OnSelect( HRESULT STDMETHODCALLTYPE CMenuDeskBar::OnSelect(
DWORD dwSelectType) DWORD dwSelectType)
{ {
if (dwSelectType == MPOS_FULLCANCEL)
{
CComPtr<IDeskBarClient> dbc;
HRESULT hr = m_Client->QueryInterface(IID_PPV_ARG(IDeskBarClient, &dbc));
if (FAILED(hr))
return hr;
hr = dbc->UIActivateDBC(FALSE);
if (FAILED(hr))
return hr;
SetWindowPos(m_hWnd, 0,0,0,0, SWP_HIDEWINDOW | SWP_NOACTIVATE | SWP_NOMOVE | SWP_NOZORDER);
UIActivateIO(FALSE, NULL);
}
return S_OK; return S_OK;
} }