mirror of
https://github.com/reactos/reactos.git
synced 2025-07-26 00:23:40 +00:00
[RSHELL]
* Fix some null dereferences. * Fix positioning of submenus of an horizontal menu toolbar. [BROWSEUI] * Fix some null dereferences. CORE-7586 svn path=/branches/shell-experiments/; revision=62492
This commit is contained in:
parent
97ff00f312
commit
b948aa332c
3 changed files with 28 additions and 15 deletions
|
@ -345,8 +345,6 @@ HRESULT STDMETHODCALLTYPE CMenuDeskBar::Popup(POINTL *ppt, RECTL *prcExclude, MP
|
||||||
y = rcWorkArea.bottom - cy;
|
y = rcWorkArea.bottom - cy;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
this->SetWindowPos(HWND_TOPMOST, x, y, cx, cy, SWP_SHOWWINDOW);
|
this->SetWindowPos(HWND_TOPMOST, x, y, cx, cy, SWP_SHOWWINDOW);
|
||||||
|
|
||||||
m_ShowFlags = dwFlags;
|
m_ShowFlags = dwFlags;
|
||||||
|
|
|
@ -492,9 +492,15 @@ HRESULT CMenuToolbarBase::PopupSubMenu(UINT uItem, UINT index, IShellMenu* child
|
||||||
ClientToScreen(m_hwnd, &c);
|
ClientToScreen(m_hwnd, &c);
|
||||||
ClientToScreen(m_hwnd, &d);
|
ClientToScreen(m_hwnd, &d);
|
||||||
|
|
||||||
POINTL pt = { b.x - 3, a.y - 3 };
|
POINTL pt = { a.x, b.y };
|
||||||
RECTL rcl = { c.x, c.y, d.x, d.y };
|
RECTL rcl = { c.x, c.y, d.x, d.y };
|
||||||
|
|
||||||
|
if(m_toolbarFlags & SMINIT_VERTICAL)
|
||||||
|
{
|
||||||
|
pt.x = b.x - 3;
|
||||||
|
pt.y = a.y - 3;
|
||||||
|
}
|
||||||
|
|
||||||
#if USE_SYSTEM_MENUSITE
|
#if USE_SYSTEM_MENUSITE
|
||||||
hr = CoCreateInstance(CLSID_MenuBandSite,
|
hr = CoCreateInstance(CLSID_MenuBandSite,
|
||||||
NULL,
|
NULL,
|
||||||
|
@ -830,13 +836,16 @@ CMenuStaticToolbar::CMenuStaticToolbar(CMenuBand *menuBand) :
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT CMenuStaticToolbar::GetMenu(
|
HRESULT CMenuStaticToolbar::GetMenu(
|
||||||
HMENU *phmenu,
|
_Out_opt_ HMENU *phmenu,
|
||||||
HWND *phwnd,
|
_Out_opt_ HWND *phwnd,
|
||||||
DWORD *pdwFlags)
|
_Out_opt_ DWORD *pdwFlags)
|
||||||
{
|
{
|
||||||
*phmenu = m_hmenu;
|
if (phmenu)
|
||||||
*phwnd = NULL;
|
*phmenu = m_hmenu;
|
||||||
*pdwFlags = m_dwMenuFlags;
|
if (phwnd)
|
||||||
|
*phwnd = NULL;
|
||||||
|
if (pdwFlags)
|
||||||
|
*pdwFlags = m_dwMenuFlags;
|
||||||
|
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
@ -977,7 +986,9 @@ HRESULT CMenuStaticToolbar::InternalHasSubMenu(INT uItem, INT index, DWORD_PTR d
|
||||||
|
|
||||||
CMenuSFToolbar::CMenuSFToolbar(CMenuBand * menuBand) :
|
CMenuSFToolbar::CMenuSFToolbar(CMenuBand * menuBand) :
|
||||||
CMenuToolbarBase(menuBand, TRUE),
|
CMenuToolbarBase(menuBand, TRUE),
|
||||||
m_shellFolder(NULL)
|
m_shellFolder(NULL),
|
||||||
|
m_idList(NULL),
|
||||||
|
m_hKey(NULL)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1049,7 +1060,7 @@ HRESULT CMenuSFToolbar::OnDeletingButton(const NMTOOLBAR * tb)
|
||||||
HRESULT CMenuSFToolbar::SetShellFolder(IShellFolder *psf, LPCITEMIDLIST pidlFolder, HKEY hKey, DWORD dwFlags)
|
HRESULT CMenuSFToolbar::SetShellFolder(IShellFolder *psf, LPCITEMIDLIST pidlFolder, HKEY hKey, DWORD dwFlags)
|
||||||
{
|
{
|
||||||
m_shellFolder = psf;
|
m_shellFolder = psf;
|
||||||
m_idList = pidlFolder;
|
m_idList = ILClone(pidlFolder);
|
||||||
m_hKey = hKey;
|
m_hKey = hKey;
|
||||||
m_dwMenuFlags = dwFlags;
|
m_dwMenuFlags = dwFlags;
|
||||||
return S_OK;
|
return S_OK;
|
||||||
|
|
|
@ -311,10 +311,14 @@ HRESULT STDMETHODCALLTYPE CAddressBand::IsWindowOwner(HWND hWnd)
|
||||||
CComPtr<IWinEventHandler> winEventHandler;
|
CComPtr<IWinEventHandler> winEventHandler;
|
||||||
HRESULT hResult;
|
HRESULT hResult;
|
||||||
|
|
||||||
hResult = fAddressEditBox->QueryInterface(IID_IWinEventHandler, reinterpret_cast<void **>(&winEventHandler));
|
if (fAddressEditBox)
|
||||||
if (FAILED(hResult))
|
{
|
||||||
return hResult;
|
hResult = fAddressEditBox->QueryInterface(IID_IWinEventHandler, reinterpret_cast<void **>(&winEventHandler));
|
||||||
return winEventHandler->IsWindowOwner(hWnd);
|
if (FAILED(hResult))
|
||||||
|
return hResult;
|
||||||
|
return winEventHandler->IsWindowOwner(hWnd);
|
||||||
|
}
|
||||||
|
return S_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT STDMETHODCALLTYPE CAddressBand::FileSysChange(long param8, long paramC)
|
HRESULT STDMETHODCALLTYPE CAddressBand::FileSysChange(long param8, long paramC)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue