mshtml: Implement IOleDocumentView and IViewObjectEx interfaces in HTMLDocumentObj object instead of HTMLDocument.

Signed-off-by: Jacek Caban <jacek@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Jacek Caban 2018-02-28 16:31:56 +01:00 committed by Alexandre Julliard
parent e55e6b8c45
commit 92e3036c72
4 changed files with 136 additions and 153 deletions

View File

@ -4761,16 +4761,8 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
*ppv = &This->IOleObject_iface;
else if(IsEqualGUID(&IID_IOleDocument, riid))
*ppv = &This->IOleDocument_iface;
else if(IsEqualGUID(&IID_IOleDocumentView, riid))
*ppv = &This->IOleDocumentView_iface;
else if(IsEqualGUID(&IID_IOleInPlaceActiveObject, riid))
*ppv = &This->IOleInPlaceActiveObject_iface;
else if(IsEqualGUID(&IID_IViewObject, riid))
*ppv = &This->IViewObjectEx_iface;
else if(IsEqualGUID(&IID_IViewObject2, riid))
*ppv = &This->IViewObjectEx_iface;
else if(IsEqualGUID(&IID_IViewObjectEx, riid))
*ppv = &This->IViewObjectEx_iface;
else if(IsEqualGUID(&IID_IOleWindow, riid))
*ppv = &This->IOleInPlaceActiveObject_iface;
else if(IsEqualGUID(&IID_IOleInPlaceObject, riid))
@ -4861,7 +4853,6 @@ static void init_doc(HTMLDocument *doc, IUnknown *outer, IDispatchEx *dispex)
HTMLDocument_Persist_Init(doc);
HTMLDocument_OleCmd_Init(doc);
HTMLDocument_OleObj_Init(doc);
HTMLDocument_View_Init(doc);
HTMLDocument_Service_Init(doc);
ConnectionPointContainer_Init(&doc->cp_container, (IUnknown*)&doc->IHTMLDocument2_iface, HTMLDocument_cpc);
@ -5247,6 +5238,14 @@ static HRESULT WINAPI HTMLDocumentObj_QueryInterface(IUnknown *iface, REFIID rii
return *ppv ? S_OK : E_NOINTERFACE;
}else if(IsEqualGUID(&IID_ICustomDoc, riid)) {
*ppv = &This->ICustomDoc_iface;
}else if(IsEqualGUID(&IID_IOleDocumentView, riid)) {
*ppv = &This->IOleDocumentView_iface;
}else if(IsEqualGUID(&IID_IViewObject, riid)) {
*ppv = &This->IViewObjectEx_iface;
}else if(IsEqualGUID(&IID_IViewObject2, riid)) {
*ppv = &This->IViewObjectEx_iface;
}else if(IsEqualGUID(&IID_IViewObjectEx, riid)) {
*ppv = &This->IViewObjectEx_iface;
}else if(IsEqualGUID(&IID_ITargetContainer, riid)) {
*ppv = &This->ITargetContainer_iface;
}else if(dispex_query_interface(&This->dispex, riid, ppv)) {
@ -5304,7 +5303,7 @@ static ULONG WINAPI HTMLDocumentObj_Release(IUnknown *iface)
if(This->in_place_active)
IOleInPlaceObjectWindowless_InPlaceDeactivate(&This->basedoc.IOleInPlaceObjectWindowless_iface);
if(This->ipsite)
IOleDocumentView_SetInPlaceSite(&This->basedoc.IOleDocumentView_iface, NULL);
IOleDocumentView_SetInPlaceSite(&This->IOleDocumentView_iface, NULL);
if(This->undomgr)
IOleUndoManager_Release(This->undomgr);
if(This->editsvcs)
@ -5450,7 +5449,7 @@ static HRESULT create_document_object(BOOL is_mhtml, IUnknown *outer, REFIID rii
doc->usermode = UNKNOWN_USERMODE;
doc->task_magic = get_task_target_magic();
init_binding_ui(doc);
HTMLDocument_View_Init(doc);
hres = create_nscontainer(doc, &doc->nscontainer);
if(FAILED(hres)) {

View File

@ -595,9 +595,7 @@ struct HTMLDocument {
IMonikerProp IMonikerProp_iface;
IOleObject IOleObject_iface;
IOleDocument IOleDocument_iface;
IOleDocumentView IOleDocumentView_iface;
IOleInPlaceActiveObject IOleInPlaceActiveObject_iface;
IViewObjectEx IViewObjectEx_iface;
IOleInPlaceObjectWindowless IOleInPlaceObjectWindowless_iface;
IServiceProvider IServiceProvider_iface;
IOleCommandTarget IOleCommandTarget_iface;
@ -642,6 +640,8 @@ struct HTMLDocumentObj {
DispatchEx dispex;
IUnknown IUnknown_outer;
ICustomDoc ICustomDoc_iface;
IOleDocumentView IOleDocumentView_iface;
IViewObjectEx IViewObjectEx_iface;
ITargetContainer ITargetContainer_iface;
IWindowForBindingUI IWindowForBindingUI_iface;
@ -876,11 +876,10 @@ HRESULT create_storage(IHTMLStorage**) DECLSPEC_HIDDEN;
void HTMLDocument_Persist_Init(HTMLDocument*) DECLSPEC_HIDDEN;
void HTMLDocument_OleCmd_Init(HTMLDocument*) DECLSPEC_HIDDEN;
void HTMLDocument_OleObj_Init(HTMLDocument*) DECLSPEC_HIDDEN;
void HTMLDocument_View_Init(HTMLDocument*) DECLSPEC_HIDDEN;
void HTMLDocument_Service_Init(HTMLDocument*) DECLSPEC_HIDDEN;
void HTMLDocument_View_Init(HTMLDocumentObj*) DECLSPEC_HIDDEN;
void TargetContainer_Init(HTMLDocumentObj*) DECLSPEC_HIDDEN;
void init_binding_ui(HTMLDocumentObj*) DECLSPEC_HIDDEN;
void HTMLDocumentNode_SecMgr_Init(HTMLDocumentNode*) DECLSPEC_HIDDEN;

View File

@ -547,17 +547,17 @@ static HRESULT WINAPI OleObject_DoVerb(IOleObject *iface, LONG iVerb, LPMSG lpms
HTMLDocument_LockContainer(This->doc_obj, TRUE);
/* FIXME: Create new IOleDocumentView. See CreateView for more info. */
hres = IOleDocumentSite_ActivateMe(pDocSite, &This->IOleDocumentView_iface);
hres = IOleDocumentSite_ActivateMe(pDocSite, &This->doc_obj->IOleDocumentView_iface);
IOleDocumentSite_Release(pDocSite);
}else {
hres = IOleDocumentView_UIActivate(&This->IOleDocumentView_iface, TRUE);
hres = IOleDocumentView_UIActivate(&This->doc_obj->IOleDocumentView_iface, TRUE);
if(SUCCEEDED(hres)) {
if(lprcPosRect) {
RECT rect; /* We need to pass rect as not const pointer */
rect = *lprcPosRect;
IOleDocumentView_SetRect(&This->IOleDocumentView_iface, &rect);
IOleDocumentView_SetRect(&This->doc_obj->IOleDocumentView_iface, &rect);
}
IOleDocumentView_Show(&This->IOleDocumentView_iface, TRUE);
IOleDocumentView_Show(&This->doc_obj->IOleDocumentView_iface, TRUE);
}
}
@ -751,7 +751,7 @@ static HRESULT WINAPI OleDocument_CreateView(IOleDocument *iface, IOleInPlaceSit
*/
if(pIPSite) {
hres = IOleDocumentView_SetInPlaceSite(&This->IOleDocumentView_iface, pIPSite);
hres = IOleDocumentView_SetInPlaceSite(&This->doc_obj->IOleDocumentView_iface, pIPSite);
if(FAILED(hres))
return hres;
}
@ -759,8 +759,8 @@ static HRESULT WINAPI OleDocument_CreateView(IOleDocument *iface, IOleInPlaceSit
if(pstm)
FIXME("pstm is not supported\n");
IOleDocumentView_AddRef(&This->IOleDocumentView_iface);
*ppView = &This->IOleDocumentView_iface;
IOleDocumentView_AddRef(&This->doc_obj->IOleDocumentView_iface);
*ppView = &This->doc_obj->IOleDocumentView_iface;
return S_OK;
}
@ -1127,7 +1127,7 @@ static HRESULT WINAPI OleInPlaceObjectWindowless_InPlaceDeactivate(IOleInPlaceOb
TRACE("(%p)\n", This);
if(This->doc_obj->ui_active)
IOleDocumentView_UIActivate(&This->IOleDocumentView_iface, FALSE);
IOleDocumentView_UIActivate(&This->doc_obj->IOleDocumentView_iface, FALSE);
This->doc_obj->window_active = FALSE;
if(!This->doc_obj->in_place_active)

View File

@ -279,11 +279,6 @@ static HRESULT activate_window(HTMLDocumentObj *This)
SetWindowPos(This->hwnd, NULL, 0, 0, 0, 0,
SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOREDRAW | SWP_NOACTIVATE | SWP_SHOWWINDOW);
RedrawWindow(This->hwnd, NULL, NULL, RDW_INVALIDATE | RDW_NOERASE | RDW_ALLCHILDREN);
/* NOTE:
* Windows implementation calls:
* RegisterWindowMessage("MSWHEEL_ROLLMSG");
*/
SetTimer(This->hwnd, TIMER_ID, 100, NULL);
}
@ -428,76 +423,76 @@ HRESULT call_set_active_object(IOleInPlaceUIWindow *window, IOleInPlaceActiveObj
* IOleDocumentView implementation
*/
static inline HTMLDocument *impl_from_IOleDocumentView(IOleDocumentView *iface)
static inline HTMLDocumentObj *impl_from_IOleDocumentView(IOleDocumentView *iface)
{
return CONTAINING_RECORD(iface, HTMLDocument, IOleDocumentView_iface);
return CONTAINING_RECORD(iface, HTMLDocumentObj, IOleDocumentView_iface);
}
static HRESULT WINAPI OleDocumentView_QueryInterface(IOleDocumentView *iface, REFIID riid, void **ppvObject)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
return htmldoc_query_interface(This, riid, ppvObject);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
return htmldoc_query_interface(&This->basedoc, riid, ppvObject);
}
static ULONG WINAPI OleDocumentView_AddRef(IOleDocumentView *iface)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
return htmldoc_addref(This);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
return htmldoc_addref(&This->basedoc);
}
static ULONG WINAPI OleDocumentView_Release(IOleDocumentView *iface)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
return htmldoc_release(This);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
return htmldoc_release(&This->basedoc);
}
static HRESULT WINAPI OleDocumentView_SetInPlaceSite(IOleDocumentView *iface, IOleInPlaceSite *pIPSite)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
TRACE("(%p)->(%p)\n", This, pIPSite);
if(pIPSite)
IOleInPlaceSite_AddRef(pIPSite);
if(This->doc_obj->ipsite)
IOleInPlaceSite_Release(This->doc_obj->ipsite);
if(This->ipsite)
IOleInPlaceSite_Release(This->ipsite);
This->doc_obj->ipsite = pIPSite;
This->doc_obj->request_uiactivate = TRUE;
This->ipsite = pIPSite;
This->request_uiactivate = TRUE;
return S_OK;
}
static HRESULT WINAPI OleDocumentView_GetInPlaceSite(IOleDocumentView *iface, IOleInPlaceSite **ppIPSite)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
TRACE("(%p)->(%p)\n", This, ppIPSite);
if(!ppIPSite)
return E_INVALIDARG;
if(This->doc_obj->ipsite)
IOleInPlaceSite_AddRef(This->doc_obj->ipsite);
if(This->ipsite)
IOleInPlaceSite_AddRef(This->ipsite);
*ppIPSite = This->doc_obj->ipsite;
*ppIPSite = This->ipsite;
return S_OK;
}
static HRESULT WINAPI OleDocumentView_GetDocument(IOleDocumentView *iface, IUnknown **ppunk)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
TRACE("(%p)->(%p)\n", This, ppunk);
if(!ppunk)
return E_INVALIDARG;
htmldoc_addref(This);
*ppunk = (IUnknown*)&This->IHTMLDocument2_iface;
*ppunk = (IUnknown*)&This->basedoc.IHTMLDocument2_iface;
IUnknown_AddRef(*ppunk);
return S_OK;
}
static HRESULT WINAPI OleDocumentView_SetRect(IOleDocumentView *iface, LPRECT prcView)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
RECT rect;
TRACE("(%p)->(%p)\n", This, prcView);
@ -505,11 +500,11 @@ static HRESULT WINAPI OleDocumentView_SetRect(IOleDocumentView *iface, LPRECT pr
if(!prcView)
return E_INVALIDARG;
if(This->doc_obj->hwnd) {
GetClientRect(This->doc_obj->hwnd, &rect);
if(This->hwnd) {
GetClientRect(This->hwnd, &rect);
if(!EqualRect(prcView, &rect)) {
InvalidateRect(This->doc_obj->hwnd, NULL, TRUE);
SetWindowPos(This->doc_obj->hwnd, NULL, prcView->left, prcView->top, prcView->right,
InvalidateRect(This->hwnd, NULL, TRUE);
SetWindowPos(This->hwnd, NULL, prcView->left, prcView->top, prcView->right,
prcView->bottom, SWP_NOZORDER | SWP_NOACTIVATE);
}
}
@ -519,49 +514,49 @@ static HRESULT WINAPI OleDocumentView_SetRect(IOleDocumentView *iface, LPRECT pr
static HRESULT WINAPI OleDocumentView_GetRect(IOleDocumentView *iface, LPRECT prcView)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
TRACE("(%p)->(%p)\n", This, prcView);
if(!prcView)
return E_INVALIDARG;
GetClientRect(This->doc_obj->hwnd, prcView);
GetClientRect(This->hwnd, prcView);
return S_OK;
}
static HRESULT WINAPI OleDocumentView_SetRectComplex(IOleDocumentView *iface, LPRECT prcView,
LPRECT prcHScroll, LPRECT prcVScroll, LPRECT prcSizeBox)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
FIXME("(%p)->(%p %p %p %p)\n", This, prcView, prcHScroll, prcVScroll, prcSizeBox);
return E_NOTIMPL;
}
static HRESULT WINAPI OleDocumentView_Show(IOleDocumentView *iface, BOOL fShow)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
HRESULT hres;
TRACE("(%p)->(%x)\n", This, fShow);
if(fShow) {
if(!This->doc_obj->ui_active) {
hres = activate_window(This->doc_obj);
if(!This->ui_active) {
hres = activate_window(This);
if(FAILED(hres))
return hres;
}
update_doc(This->doc_obj, UPDATE_UI);
ShowWindow(This->doc_obj->hwnd, SW_SHOW);
update_doc(This, UPDATE_UI);
ShowWindow(This->hwnd, SW_SHOW);
}else {
ShowWindow(This->doc_obj->hwnd, SW_HIDE);
ShowWindow(This->hwnd, SW_HIDE);
if(This->doc_obj->in_place_active)
IOleInPlaceObjectWindowless_InPlaceDeactivate(&This->IOleInPlaceObjectWindowless_iface);
if(This->in_place_active)
IOleInPlaceObjectWindowless_InPlaceDeactivate(&This->basedoc.IOleInPlaceObjectWindowless_iface);
if(This->doc_obj->ip_window) {
IOleInPlaceUIWindow_Release(This->doc_obj->ip_window);
This->doc_obj->ip_window = NULL;
if(This->ip_window) {
IOleInPlaceUIWindow_Release(This->ip_window);
This->ip_window = NULL;
}
}
@ -570,13 +565,13 @@ static HRESULT WINAPI OleDocumentView_Show(IOleDocumentView *iface, BOOL fShow)
static HRESULT WINAPI OleDocumentView_UIActivate(IOleDocumentView *iface, BOOL fUIActivate)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
HRESULT hres;
TRACE("(%p)->(%x)\n", This, fUIActivate);
if(!This->doc_obj->ipsite) {
IOleClientSite *cs = This->doc_obj->client;
if(!This->ipsite) {
IOleClientSite *cs = This->client;
IOleInPlaceSite *ips;
if(!cs) {
@ -586,15 +581,15 @@ static HRESULT WINAPI OleDocumentView_UIActivate(IOleDocumentView *iface, BOOL f
hres = IOleClientSite_QueryInterface(cs, &IID_IOleInPlaceSiteWindowless, (void**)&ips);
if(SUCCEEDED(hres))
This->doc_obj->ipsite = ips;
This->ipsite = ips;
else {
hres = IOleClientSite_QueryInterface(cs, &IID_IOleInPlaceSiteEx, (void**)&ips);
if(SUCCEEDED(hres))
This->doc_obj->ipsite = ips;
This->ipsite = ips;
else {
hres = IOleClientSite_QueryInterface(cs, &IID_IOleInPlaceSite, (void**)&ips);
if(SUCCEEDED(hres))
This->doc_obj->ipsite = ips;
This->ipsite = ips;
else {
WARN("this->ipsite = NULL\n");
return E_NOINTERFACE;
@ -602,71 +597,71 @@ static HRESULT WINAPI OleDocumentView_UIActivate(IOleDocumentView *iface, BOOL f
}
}
IOleInPlaceSite_AddRef(This->doc_obj->ipsite);
This->doc_obj->request_uiactivate = FALSE;
HTMLDocument_LockContainer(This->doc_obj, TRUE);
IOleInPlaceSite_AddRef(This->ipsite);
This->request_uiactivate = FALSE;
HTMLDocument_LockContainer(This, TRUE);
}
if(fUIActivate) {
RECT rcBorderWidths;
if(This->doc_obj->ui_active)
if(This->ui_active)
return S_OK;
if(!This->doc_obj->window_active) {
hres = activate_window(This->doc_obj);
if(!This->window_active) {
hres = activate_window(This);
if(FAILED(hres))
return hres;
}
This->doc_obj->focus = TRUE;
if(This->doc_obj->nscontainer)
nsIWebBrowserFocus_Activate(This->doc_obj->nscontainer->focus);
notif_focus(This->doc_obj);
This->focus = TRUE;
if(This->nscontainer)
nsIWebBrowserFocus_Activate(This->nscontainer->focus);
notif_focus(This);
update_doc(This->doc_obj, UPDATE_UI);
update_doc(This, UPDATE_UI);
hres = IOleInPlaceSite_OnUIActivate(This->doc_obj->ipsite);
hres = IOleInPlaceSite_OnUIActivate(This->ipsite);
if(SUCCEEDED(hres)) {
call_set_active_object((IOleInPlaceUIWindow*)This->doc_obj->frame,
&This->IOleInPlaceActiveObject_iface);
call_set_active_object((IOleInPlaceUIWindow*)This->frame,
&This->basedoc.IOleInPlaceActiveObject_iface);
}else {
FIXME("OnUIActivate failed: %08x\n", hres);
IOleInPlaceFrame_Release(This->doc_obj->frame);
This->doc_obj->frame = NULL;
This->doc_obj->ui_active = FALSE;
IOleInPlaceFrame_Release(This->frame);
This->frame = NULL;
This->ui_active = FALSE;
return hres;
}
if(This->doc_obj->hostui) {
hres = IDocHostUIHandler_ShowUI(This->doc_obj->hostui,
This->doc_obj->usermode == EDITMODE ? DOCHOSTUITYPE_AUTHOR : DOCHOSTUITYPE_BROWSE,
&This->IOleInPlaceActiveObject_iface, &This->IOleCommandTarget_iface,
This->doc_obj->frame, This->doc_obj->ip_window);
if(This->hostui) {
hres = IDocHostUIHandler_ShowUI(This->hostui,
This->usermode == EDITMODE ? DOCHOSTUITYPE_AUTHOR : DOCHOSTUITYPE_BROWSE,
&This->basedoc.IOleInPlaceActiveObject_iface, &This->basedoc.IOleCommandTarget_iface,
This->frame, This->ip_window);
if(FAILED(hres))
IDocHostUIHandler_HideUI(This->doc_obj->hostui);
IDocHostUIHandler_HideUI(This->hostui);
}
if(This->doc_obj->ip_window)
call_set_active_object(This->doc_obj->ip_window, &This->IOleInPlaceActiveObject_iface);
if(This->ip_window)
call_set_active_object(This->ip_window, &This->basedoc.IOleInPlaceActiveObject_iface);
SetRectEmpty(&rcBorderWidths);
IOleInPlaceFrame_SetBorderSpace(This->doc_obj->frame, &rcBorderWidths);
IOleInPlaceFrame_SetBorderSpace(This->frame, &rcBorderWidths);
This->doc_obj->ui_active = TRUE;
This->ui_active = TRUE;
}else {
This->doc_obj->focus = FALSE;
nsIWebBrowserFocus_Deactivate(This->doc_obj->nscontainer->focus);
if(This->doc_obj->ui_active) {
This->doc_obj->ui_active = FALSE;
if(This->doc_obj->ip_window)
call_set_active_object(This->doc_obj->ip_window, NULL);
if(This->doc_obj->frame)
call_set_active_object((IOleInPlaceUIWindow*)This->doc_obj->frame, NULL);
if(This->doc_obj->hostui)
IDocHostUIHandler_HideUI(This->doc_obj->hostui);
if(This->doc_obj->ipsite)
IOleInPlaceSite_OnUIDeactivate(This->doc_obj->ipsite, FALSE);
This->focus = FALSE;
nsIWebBrowserFocus_Deactivate(This->nscontainer->focus);
if(This->ui_active) {
This->ui_active = FALSE;
if(This->ip_window)
call_set_active_object(This->ip_window, NULL);
if(This->frame)
call_set_active_object((IOleInPlaceUIWindow*)This->frame, NULL);
if(This->hostui)
IDocHostUIHandler_HideUI(This->hostui);
if(This->ipsite)
IOleInPlaceSite_OnUIDeactivate(This->ipsite, FALSE);
}
}
return S_OK;
@ -674,39 +669,33 @@ static HRESULT WINAPI OleDocumentView_UIActivate(IOleDocumentView *iface, BOOL f
static HRESULT WINAPI OleDocumentView_Open(IOleDocumentView *iface)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
FIXME("(%p)\n", This);
return E_NOTIMPL;
}
static HRESULT WINAPI OleDocumentView_CloseView(IOleDocumentView *iface, DWORD dwReserved)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
TRACE("(%p)->(%x)\n", This, dwReserved);
if(dwReserved)
WARN("dwReserved = %d\n", dwReserved);
/* NOTE:
* Windows implementation calls QueryInterface(IID_IOleCommandTarget),
* QueryInterface(IID_IOleControlSite) and KillTimer
*/
IOleDocumentView_Show(iface, FALSE);
return S_OK;
}
static HRESULT WINAPI OleDocumentView_SaveViewState(IOleDocumentView *iface, IStream *pstm)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
FIXME("(%p)->(%p)\n", This, pstm);
return E_NOTIMPL;
}
static HRESULT WINAPI OleDocumentView_ApplyViewState(IOleDocumentView *iface, IStream *pstm)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
FIXME("(%p)->(%p)\n", This, pstm);
return E_NOTIMPL;
}
@ -714,7 +703,7 @@ static HRESULT WINAPI OleDocumentView_ApplyViewState(IOleDocumentView *iface, IS
static HRESULT WINAPI OleDocumentView_Clone(IOleDocumentView *iface, IOleInPlaceSite *pIPSiteNew,
IOleDocumentView **ppViewNew)
{
HTMLDocument *This = impl_from_IOleDocumentView(iface);
HTMLDocumentObj *This = impl_from_IOleDocumentView(iface);
FIXME("(%p)->(%p %p)\n", This, pIPSiteNew, ppViewNew);
return E_NOTIMPL;
}
@ -742,34 +731,34 @@ static const IOleDocumentViewVtbl OleDocumentViewVtbl = {
* IViewObject implementation
*/
static inline HTMLDocument *impl_from_IViewObjectEx(IViewObjectEx *iface)
static inline HTMLDocumentObj *impl_from_IViewObjectEx(IViewObjectEx *iface)
{
return CONTAINING_RECORD(iface, HTMLDocument, IViewObjectEx_iface);
return CONTAINING_RECORD(iface, HTMLDocumentObj, IViewObjectEx_iface);
}
static HRESULT WINAPI ViewObject_QueryInterface(IViewObjectEx *iface, REFIID riid, void **ppv)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
return htmldoc_query_interface(This, riid, ppv);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
return htmldoc_query_interface(&This->basedoc, riid, ppv);
}
static ULONG WINAPI ViewObject_AddRef(IViewObjectEx *iface)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
return htmldoc_addref(This);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
return htmldoc_addref(&This->basedoc);
}
static ULONG WINAPI ViewObject_Release(IViewObjectEx *iface)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
return htmldoc_release(This);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
return htmldoc_release(&This->basedoc);
}
static HRESULT WINAPI ViewObject_Draw(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect,
DVTARGETDEVICE *ptd, HDC hdcTargetDev, HDC hdcDraw, LPCRECTL lprcBounds,
LPCRECTL lprcWBounds, BOOL (CALLBACK *pfnContinue)(ULONG_PTR dwContinue), ULONG_PTR dwContinue)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%d %d %p %p %p %p %p %p %p %ld)\n", This, dwDrawAspect, lindex, pvAspect,
ptd, hdcTargetDev, hdcDraw, lprcBounds, lprcWBounds, pfnContinue, dwContinue);
return E_NOTIMPL;
@ -778,7 +767,7 @@ static HRESULT WINAPI ViewObject_Draw(IViewObjectEx *iface, DWORD dwDrawAspect,
static HRESULT WINAPI ViewObject_GetColorSet(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect,
DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%d %d %p %p %p %p)\n", This, dwDrawAspect, lindex, pvAspect, ptd, hicTargetDev, ppColorSet);
return E_NOTIMPL;
}
@ -786,39 +775,39 @@ static HRESULT WINAPI ViewObject_GetColorSet(IViewObjectEx *iface, DWORD dwDrawA
static HRESULT WINAPI ViewObject_Freeze(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex,
void *pvAspect, DWORD *pdwFreeze)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%d %d %p %p)\n", This, dwDrawAspect, lindex, pvAspect, pdwFreeze);
return E_NOTIMPL;
}
static HRESULT WINAPI ViewObject_Unfreeze(IViewObjectEx *iface, DWORD dwFreeze)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%d)\n", This, dwFreeze);
return E_NOTIMPL;
}
static HRESULT WINAPI ViewObject_SetAdvise(IViewObjectEx *iface, DWORD aspects, DWORD advf, IAdviseSink *pAdvSink)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
TRACE("(%p)->(%d %d %p)\n", This, aspects, advf, pAdvSink);
if(aspects != DVASPECT_CONTENT || advf != ADVF_PRIMEFIRST)
FIXME("unsupported arguments\n");
if(This->doc_obj->view_sink)
IAdviseSink_Release(This->doc_obj->view_sink);
if(This->view_sink)
IAdviseSink_Release(This->view_sink);
if(pAdvSink)
IAdviseSink_AddRef(pAdvSink);
This->doc_obj->view_sink = pAdvSink;
This->view_sink = pAdvSink;
return S_OK;
}
static HRESULT WINAPI ViewObject_GetAdvise(IViewObjectEx *iface, DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%p %p %p)\n", This, pAspects, pAdvf, ppAdvSink);
return E_NOTIMPL;
}
@ -826,21 +815,21 @@ static HRESULT WINAPI ViewObject_GetAdvise(IViewObjectEx *iface, DWORD *pAspects
static HRESULT WINAPI ViewObject_GetExtent(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex,
DVTARGETDEVICE* ptd, LPSIZEL lpsizel)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%d %d %p %p)\n", This, dwDrawAspect, lindex, ptd, lpsizel);
return E_NOTIMPL;
}
static HRESULT WINAPI ViewObject_GetRect(IViewObjectEx *iface, DWORD dwAspect, LPRECTL pRect)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%d %p)\n", This, dwAspect, pRect);
return E_NOTIMPL;
}
static HRESULT WINAPI ViewObject_GetViewStatus(IViewObjectEx *iface, DWORD *pdwStatus)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%p)\n", This, pdwStatus);
return E_NOTIMPL;
}
@ -848,7 +837,7 @@ static HRESULT WINAPI ViewObject_GetViewStatus(IViewObjectEx *iface, DWORD *pdwS
static HRESULT WINAPI ViewObject_QueryHitPoint(IViewObjectEx* iface, DWORD dwAspect,
LPCRECT pRectBounds, POINT ptlLoc, LONG lCloseHint, DWORD *pHitResult)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%d %p (%d %d) %d %p)\n", This, dwAspect, pRectBounds, ptlLoc.x,
ptlLoc.y, lCloseHint, pHitResult);
return E_NOTIMPL;
@ -857,7 +846,7 @@ static HRESULT WINAPI ViewObject_QueryHitPoint(IViewObjectEx* iface, DWORD dwAsp
static HRESULT WINAPI ViewObject_QueryHitRect(IViewObjectEx *iface, DWORD dwAspect,
LPCRECT pRectBounds, LPCRECT pRectLoc, LONG lCloseHint, DWORD *pHitResult)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%d %p %p %d %p)\n", This, dwAspect, pRectBounds, pRectLoc, lCloseHint, pHitResult);
return E_NOTIMPL;
}
@ -865,7 +854,7 @@ static HRESULT WINAPI ViewObject_QueryHitRect(IViewObjectEx *iface, DWORD dwAspe
static HRESULT WINAPI ViewObject_GetNaturalExtent(IViewObjectEx *iface, DWORD dwAspect, LONG lindex,
DVTARGETDEVICE *ptd, HDC hicTargetDev, DVEXTENTINFO *pExtentInfo, LPSIZEL pSizel)
{
HTMLDocument *This = impl_from_IViewObjectEx(iface);
HTMLDocumentObj *This = impl_from_IViewObjectEx(iface);
FIXME("(%p)->(%d %d %p %p %p %p\n", This, dwAspect,lindex, ptd,
hicTargetDev, pExtentInfo, pSizel);
return E_NOTIMPL;
@ -889,12 +878,6 @@ static const IViewObjectExVtbl ViewObjectVtbl = {
ViewObject_GetNaturalExtent
};
void HTMLDocument_View_Init(HTMLDocument *This)
{
This->IOleDocumentView_iface.lpVtbl = &OleDocumentViewVtbl;
This->IViewObjectEx_iface.lpVtbl = &ViewObjectVtbl;
}
static inline HTMLDocumentObj *impl_from_IWindowForBindingUI(IWindowForBindingUI *iface)
{
return CONTAINING_RECORD(iface, HTMLDocumentObj, IWindowForBindingUI_iface);
@ -949,7 +932,9 @@ static const IWindowForBindingUIVtbl WindowForBindingUIVtbl = {
WindowForBindingUI_GetWindow
};
void init_binding_ui(HTMLDocumentObj *doc)
void HTMLDocument_View_Init(HTMLDocumentObj *doc)
{
doc->IOleDocumentView_iface.lpVtbl = &OleDocumentViewVtbl;
doc->IViewObjectEx_iface.lpVtbl = &ViewObjectVtbl;
doc->IWindowForBindingUI_iface.lpVtbl = &WindowForBindingUIVtbl;
}