From b6207043c91f0fbfa4fcbd53533f959af4306165 Mon Sep 17 00:00:00 2001 From: David Quintana Date: Wed, 19 Feb 2014 13:58:28 +0000 Subject: [PATCH] [RSHELL] * Reduce a few more log differences with windows. CORE-7586 svn path=/branches/shell-experiments/; revision=62254 --- base/shell/rshell/CMenuBand.cpp | 24 ++++++++++++++++++++++-- base/shell/rshell/CMenuDeskBar.cpp | 14 ++++++++++++++ base/shell/rshell/precomp.h | 2 +- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/base/shell/rshell/CMenuBand.cpp b/base/shell/rshell/CMenuBand.cpp index e08e7690d27..72d262164b8 100644 --- a/base/shell/rshell/CMenuBand.cpp +++ b/base/shell/rshell/CMenuBand.cpp @@ -1289,8 +1289,28 @@ HRESULT STDMETHODCALLTYPE CMenuBand::ContextSensitiveHelp(BOOL fEnterMode) HRESULT STDMETHODCALLTYPE CMenuBand::UIActivateIO(BOOL fActivate, LPMSG lpMsg) { - UNIMPLEMENTED; - return S_OK; + HRESULT hr; + + CComPtr pmp; + + hr = IUnknown_QueryService(m_site, SID_SMenuPopup, IID_PPV_ARG(IMenuPopup, &pmp)); + if (FAILED(hr)) + return hr; + + hr = pmp->SetSubMenu(this, TRUE); + if (FAILED(hr)) + return hr; + + CComPtr pTopLevelWindow; + hr = IUnknown_QueryService(m_site, SID_SMenuPopup, IID_PPV_ARG(IOleWindow, &pTopLevelWindow)); + if (FAILED(hr)) + return hr; + + hr = pTopLevelWindow->GetWindow(&m_topLevelWindow); + if (FAILED(hr)) + return hr; + + return S_FALSE; } HRESULT STDMETHODCALLTYPE CMenuBand::HasFocusIO() diff --git a/base/shell/rshell/CMenuDeskBar.cpp b/base/shell/rshell/CMenuDeskBar.cpp index bed852beee4..ba2b7490ce7 100644 --- a/base/shell/rshell/CMenuDeskBar.cpp +++ b/base/shell/rshell/CMenuDeskBar.cpp @@ -23,6 +23,8 @@ WINE_DEFAULT_DEBUG_CHANNEL(CMenuDeskBar); +const static GUID CGID_MenuDeskBar = { 0x5C9F0A12, 0x959E, 0x11D0, { 0xA3, 0xA4, 0x00, 0xA0, 0xC9, 0x08, 0x26, 0x36 } }; + typedef CWinTraits< WS_POPUP | WS_DLGFRAME | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, WS_EX_LEFT | WS_EX_LTRREADING | WS_EX_RIGHTSCROLLBAR | WS_EX_PALETTEWINDOW @@ -193,6 +195,18 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::QueryStatus(const GUID *pguidCmdGroup, U HRESULT STDMETHODCALLTYPE CMenuDeskBar::Exec(const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut) { + if (IsEqualIID(*pguidCmdGroup, CGID_MenuDeskBar)) + { + switch (nCmdID) + { + case 2: // refresh + return S_OK; + case 3: // load complete + return S_OK; + case 4: // set font metrics + return S_OK; + } + } if (IsEqualIID(*pguidCmdGroup, CGID_Explorer)) { } diff --git a/base/shell/rshell/precomp.h b/base/shell/rshell/precomp.h index e7b1f14e623..5715aaaf572 100644 --- a/base/shell/rshell/precomp.h +++ b/base/shell/rshell/precomp.h @@ -1,5 +1,5 @@ -#define USE_SYSTEM_MENUDESKBAR 1 +#define USE_SYSTEM_MENUDESKBAR 0 #define USE_SYSTEM_MENUSITE 0 #define USE_SYSTEM_MENUBAND 0