From d29f9dcfef2bef20868ea77963b87a822c33ce9d Mon Sep 17 00:00:00 2001 From: Giannis Adamopoulos Date: Mon, 17 Feb 2014 10:42:52 +0000 Subject: [PATCH] [RSHELL] - 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 --- base/shell/rshell/CMenuDeskBar.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/base/shell/rshell/CMenuDeskBar.cpp b/base/shell/rshell/CMenuDeskBar.cpp index d00dc90f02d..b353cfbbe1f 100644 --- a/base/shell/rshell/CMenuDeskBar.cpp +++ b/base/shell/rshell/CMenuDeskBar.cpp @@ -127,7 +127,7 @@ public: DECLARE_PROTECT_FINAL_CONSTRUCT() #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) MESSAGE_HANDLER(WM_SIZE, OnSize) @@ -777,11 +777,7 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::Popup(POINTL *ppt, RECTL *prcExclude, MP BOOL bHandled; OnSize(WM_SIZE, 0, 0, bHandled); - hr = m_Client->QueryInterface(IID_PPV_ARG(IInputObject, &io)); - if (FAILED(hr)) - return hr; - - io->UIActivateIO(TRUE, NULL); + UIActivateIO(TRUE, NULL); return S_OK; } @@ -832,6 +828,23 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::GetBitmap(THIS_ HBITMAP* phBitmap) HRESULT STDMETHODCALLTYPE CMenuDeskBar::OnSelect( DWORD dwSelectType) { + if (dwSelectType == MPOS_FULLCANCEL) + { + CComPtr 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; }