From edfdf34624c20768a50199ba87b08371fc0a3208 Mon Sep 17 00:00:00 2001 From: David Quintana Date: Tue, 18 Feb 2014 11:17:37 +0000 Subject: [PATCH] [RSHELL] * CMenuBand: Fix display of icons for the static toolbar. * CMenuDeskBar: Fix positioning of the window not to cross the top edge. CORE-7881 svn path=/branches/shell-experiments/; revision=62242 --- base/shell/rshell/CMenuBand.cpp | 3 ++- base/shell/rshell/CMenuDeskBar.cpp | 19 +++++++------------ 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/base/shell/rshell/CMenuBand.cpp b/base/shell/rshell/CMenuBand.cpp index 0090407353e..c3bf781b83e 100644 --- a/base/shell/rshell/CMenuBand.cpp +++ b/base/shell/rshell/CMenuBand.cpp @@ -1130,7 +1130,8 @@ HRESULT CMenuStaticToolbar::FillToolbar() tbb.iString = (INT_PTR) MenuString; tbb.idCommand = info.wID; - SMINFO sminfo; + SMINFO sminfo = { 0 }; + sminfo.dwMask = SMIM_ICON; if (info.wID >= 0 && SUCCEEDED(m_menuBand->CallCBWithId(info.wID, SMC_GETINFO, 0, (LPARAM) &sminfo))) { tbb.iBitmap = sminfo.iIcon; diff --git a/base/shell/rshell/CMenuDeskBar.cpp b/base/shell/rshell/CMenuDeskBar.cpp index 7de8cceb582..8b44d30ba9f 100644 --- a/base/shell/rshell/CMenuDeskBar.cpp +++ b/base/shell/rshell/CMenuDeskBar.cpp @@ -134,7 +134,6 @@ public: MESSAGE_HANDLER(WM_NOTIFY, OnNotify) MESSAGE_HANDLER(WM_CANCELMODE, OnCancelMode) MESSAGE_HANDLER(WM_WINDOWPOSCHANGED, OnWindowPosChanged) - MESSAGE_HANDLER(WM_ACTIVATE, OnActivate) MESSAGE_HANDLER(WM_PAINT, OnPaint) END_MSG_MAP() @@ -143,7 +142,6 @@ public: LRESULT OnNotify(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); LRESULT OnCancelMode(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); LRESULT OnWindowPosChanged(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); - LRESULT OnActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled); #endif @@ -667,16 +665,6 @@ LRESULT CMenuDeskBar::OnWindowPosChanged(UINT uMsg, WPARAM wParam, LPARAM lParam return 0; } -LRESULT CMenuDeskBar::OnActivate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled) -{ - if (LOWORD(wParam) == WA_INACTIVE) - { - //DestroyWindow(); - //ShowWindow(SW_HIDE); - } - return 0; -} - LRESULT CMenuDeskBar::OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled) { TRACE("OnPaint\n"); @@ -771,6 +759,13 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::Popup(POINTL *ppt, RECTL *prcExclude, MP int cx = rc.right; int cy = rc.bottom; + if (y < 0) + { + y = 0; + } + + // if (y+cy > work area height) cy = work area height - y + this->SetWindowPos(HWND_TOPMOST, x, y, cx, cy, SWP_SHOWWINDOW); // HACK: The bar needs to be notified of the size AFTER it is shown.