[BROWSEUI]

- CBaseBar, CBaseBarSite: Implement IInputObject and IInputObjectSite interfaces
- Part of the work submitted by Sylvain Deverre. Simplified by me.
CORE-8814 and CORE-10838

svn path=/trunk/; revision=71461
This commit is contained in:
Giannis Adamopoulos 2016-05-30 20:28:30 +00:00
parent 9a118725bf
commit 25f1b9eb0b
2 changed files with 25 additions and 12 deletions

View file

@ -241,8 +241,7 @@ HRESULT STDMETHODCALLTYPE CBaseBar::ContextSensitiveHelp(BOOL fEnterMode)
HRESULT STDMETHODCALLTYPE CBaseBar::OnFocusChangeIS (IUnknown *punkObj, BOOL fSetFocus)
{
// forward to owner
return E_NOTIMPL;
return IUnknown_OnFocusChangeIS(fSite, punkObj, fSetFocus);
}
HRESULT STDMETHODCALLTYPE CBaseBar::QueryStatus(const GUID *pguidCmdGroup, ULONG cCmds,
@ -291,20 +290,17 @@ HRESULT STDMETHODCALLTYPE CBaseBar::QueryService(REFGUID guidService, REFIID rii
HRESULT STDMETHODCALLTYPE CBaseBar::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
{
// forward to contained bar
return S_OK;
return IUnknown_UIActivateIO(fClient, fActivate, lpMsg);
}
HRESULT STDMETHODCALLTYPE CBaseBar::HasFocusIO()
{
// forward to contained bar
return S_OK;
return IUnknown_HasFocusIO(fClient);
}
HRESULT STDMETHODCALLTYPE CBaseBar::TranslateAcceleratorIO(LPMSG lpMsg)
{
// forward to contained bar
return S_FALSE;
return IUnknown_TranslateAcceleratorIO(fClient, lpMsg);
}
HRESULT STDMETHODCALLTYPE CBaseBar::SetClient(IUnknown *punkClient)

View file

@ -248,17 +248,33 @@ HRESULT STDMETHODCALLTYPE CBaseBarSite::ContextSensitiveHelp(BOOL fEnterMode)
HRESULT STDMETHODCALLTYPE CBaseBarSite::UIActivateIO(BOOL fActivate, LPMSG lpMsg)
{
return E_NOTIMPL;
if (!fCurrentActiveBar)
return S_OK;
return IUnknown_UIActivateIO(fCurrentActiveBar->fTheBar, fActivate, lpMsg);
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::HasFocusIO()
{
return E_NOTIMPL;
if (!fCurrentActiveBar)
return S_FALSE;
return IUnknown_HasFocusIO(fCurrentActiveBar->fTheBar);
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::TranslateAcceleratorIO(LPMSG lpMsg)
{
return E_NOTIMPL;
if (!fCurrentActiveBar)
{
if (lpMsg)
{
TranslateMessage(lpMsg);
DispatchMessage(lpMsg);
}
return S_OK;
}
return IUnknown_TranslateAcceleratorIO(fCurrentActiveBar->fTheBar, lpMsg);
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::QueryService(REFGUID guidService, REFIID riid, void **ppvObject)
@ -314,7 +330,8 @@ HRESULT STDMETHODCALLTYPE CBaseBarSite::IsWindowOwner(HWND hWnd)
HRESULT STDMETHODCALLTYPE CBaseBarSite::OnFocusChangeIS (IUnknown *punkObj, BOOL fSetFocus)
{
return E_NOTIMPL;
// FIXME: should we directly pass-through, or advertise ourselves as focus owner ?
return IUnknown_OnFocusChangeIS(fDeskBarSite, punkObj, fSetFocus);
}
HRESULT STDMETHODCALLTYPE CBaseBarSite::SetDeskBarSite(IUnknown *punkSite)