diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index eb1c78277ad..57d4fc6e517 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -1697,6 +1697,9 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
}else if(IsEqualGUID(&IID_IViewObject2, riid)) {
TRACE("(%p)->(IID_IViewObject2, %p)\n", This, ppv);
*ppv = VIEWOBJ2(This);
+ }else if(IsEqualGUID(&IID_IViewObjectEx, riid)) {
+ TRACE("(%p)->(IID_IViewObjectEx, %p)\n", This, ppv);
+ *ppv = VIEWOBJEX(This);
}else if(IsEqualGUID(&IID_IOleWindow, riid)) {
TRACE("(%p)->(IID_IOleWindow, %p)\n", This, ppv);
*ppv = OLEWIN(This);
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 4fb4c89f6c2..afd0bff74b7 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -314,7 +314,7 @@ struct HTMLDocument {
const IOleDocumentVtbl *lpOleDocumentVtbl;
const IOleDocumentViewVtbl *lpOleDocumentViewVtbl;
const IOleInPlaceActiveObjectVtbl *lpOleInPlaceActiveObjectVtbl;
- const IViewObject2Vtbl *lpViewObject2Vtbl;
+ const IViewObjectExVtbl *lpViewObjectExVtbl;
const IOleInPlaceObjectWindowlessVtbl *lpOleInPlaceObjectWindowlessVtbl;
const IServiceProviderVtbl *lpServiceProviderVtbl;
const IOleCommandTargetVtbl *lpOleCommandTargetVtbl;
@@ -564,8 +564,9 @@ struct HTMLDocumentNode {
#define DOCVIEW(x) ((IOleDocumentView*) &(x)->lpOleDocumentViewVtbl)
#define OLEWIN(x) ((IOleWindow*) &(x)->lpOleInPlaceActiveObjectVtbl)
#define ACTOBJ(x) ((IOleInPlaceActiveObject*) &(x)->lpOleInPlaceActiveObjectVtbl)
-#define VIEWOBJ(x) ((IViewObject*) &(x)->lpViewObject2Vtbl)
-#define VIEWOBJ2(x) ((IViewObject2*) &(x)->lpViewObject2Vtbl)
+#define VIEWOBJ(x) ((IViewObject*) &(x)->lpViewObjectExVtbl)
+#define VIEWOBJ2(x) ((IViewObject2*) &(x)->lpViewObjectExVtbl)
+#define VIEWOBJEX(x) ((IViewObjectEx*) &(x)->lpViewObjectExVtbl)
#define INPLACEOBJ(x) ((IOleInPlaceObject*) &(x)->lpOleInPlaceObjectWindowlessVtbl)
#define INPLACEWIN(x) ((IOleInPlaceObjectWindowless*) &(x)->lpOleInPlaceObjectWindowlessVtbl)
#define SERVPROV(x) ((IServiceProvider*) &(x)->lpServiceProviderVtbl)
diff --git a/dlls/mshtml/view.c b/dlls/mshtml/view.c
index 271a1675107..f4c62a03d63 100644
--- a/dlls/mshtml/view.c
+++ b/dlls/mshtml/view.c
@@ -751,27 +751,27 @@ static const IOleDocumentViewVtbl OleDocumentViewVtbl = {
* IViewObject implementation
*/
-#define VIEWOBJ_THIS(iface) DEFINE_THIS(HTMLDocument, ViewObject2, iface)
+#define VIEWOBJ_THIS(iface) DEFINE_THIS(HTMLDocument, ViewObjectEx, iface)
-static HRESULT WINAPI ViewObject_QueryInterface(IViewObject2 *iface, REFIID riid, void **ppvObject)
+static HRESULT WINAPI ViewObject_QueryInterface(IViewObjectEx *iface, REFIID riid, void **ppvObject)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
return IHTMLDocument2_QueryInterface(HTMLDOC(This), riid, ppvObject);
}
-static ULONG WINAPI ViewObject_AddRef(IViewObject2 *iface)
+static ULONG WINAPI ViewObject_AddRef(IViewObjectEx *iface)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
return IHTMLDocument2_AddRef(HTMLDOC(This));
}
-static ULONG WINAPI ViewObject_Release(IViewObject2 *iface)
+static ULONG WINAPI ViewObject_Release(IViewObjectEx *iface)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
return IHTMLDocument2_Release(HTMLDOC(This));
}
-static HRESULT WINAPI ViewObject_Draw(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect,
+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)
{
@@ -781,7 +781,7 @@ static HRESULT WINAPI ViewObject_Draw(IViewObject2 *iface, DWORD dwDrawAspect, L
return E_NOTIMPL;
}
-static HRESULT WINAPI ViewObject_GetColorSet(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect,
+static HRESULT WINAPI ViewObject_GetColorSet(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex, void *pvAspect,
DVTARGETDEVICE *ptd, HDC hicTargetDev, LOGPALETTE **ppColorSet)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
@@ -789,7 +789,7 @@ static HRESULT WINAPI ViewObject_GetColorSet(IViewObject2 *iface, DWORD dwDrawAs
return E_NOTIMPL;
}
-static HRESULT WINAPI ViewObject_Freeze(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex,
+static HRESULT WINAPI ViewObject_Freeze(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex,
void *pvAspect, DWORD *pdwFreeze)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
@@ -797,28 +797,28 @@ static HRESULT WINAPI ViewObject_Freeze(IViewObject2 *iface, DWORD dwDrawAspect,
return E_NOTIMPL;
}
-static HRESULT WINAPI ViewObject_Unfreeze(IViewObject2 *iface, DWORD dwFreeze)
+static HRESULT WINAPI ViewObject_Unfreeze(IViewObjectEx *iface, DWORD dwFreeze)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
FIXME("(%p)->(%d)\n", This, dwFreeze);
return E_NOTIMPL;
}
-static HRESULT WINAPI ViewObject_SetAdvise(IViewObject2 *iface, DWORD aspects, DWORD advf, IAdviseSink *pAdvSink)
+static HRESULT WINAPI ViewObject_SetAdvise(IViewObjectEx *iface, DWORD aspects, DWORD advf, IAdviseSink *pAdvSink)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
FIXME("(%p)->(%d %d %p)\n", This, aspects, advf, pAdvSink);
return E_NOTIMPL;
}
-static HRESULT WINAPI ViewObject_GetAdvise(IViewObject2 *iface, DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink)
+static HRESULT WINAPI ViewObject_GetAdvise(IViewObjectEx *iface, DWORD *pAspects, DWORD *pAdvf, IAdviseSink **ppAdvSink)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
FIXME("(%p)->(%p %p %p)\n", This, pAspects, pAdvf, ppAdvSink);
return E_NOTIMPL;
}
-static HRESULT WINAPI ViewObject_GetExtent(IViewObject2 *iface, DWORD dwDrawAspect, LONG lindex,
+static HRESULT WINAPI ViewObject_GetExtent(IViewObjectEx *iface, DWORD dwDrawAspect, LONG lindex,
DVTARGETDEVICE* ptd, LPSIZEL lpsizel)
{
HTMLDocument *This = VIEWOBJ_THIS(iface);
@@ -826,9 +826,49 @@ static HRESULT WINAPI ViewObject_GetExtent(IViewObject2 *iface, DWORD dwDrawAspe
return E_NOTIMPL;
}
+static HRESULT WINAPI ViewObject_GetRect(IViewObjectEx *iface, DWORD dwAspect, LPRECTL pRect)
+{
+ HTMLDocument *This = VIEWOBJ_THIS(iface);
+ FIXME("(%p)->(%d %p)\n", This, dwAspect, pRect);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ViewObject_GetViewStatus(IViewObjectEx *iface, DWORD *pdwStatus)
+{
+ HTMLDocument *This = VIEWOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pdwStatus);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ViewObject_QueryHitPoint(IViewObjectEx* iface, DWORD dwAspect,
+ LPCRECT pRectBounds, POINT ptlLoc, LONG lCloseHint, DWORD *pHitResult)
+{
+ HTMLDocument *This = VIEWOBJ_THIS(iface);
+ FIXME("(%p)->(%d %p (%d %d) %d %p)\n", This, dwAspect, pRectBounds, ptlLoc.x,
+ ptlLoc.y, lCloseHint, pHitResult);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ViewObject_QueryHitRect(IViewObjectEx *iface, DWORD dwAspect,
+ LPCRECT pRectBounds, LPCRECT pRectLoc, LONG lCloseHint, DWORD *pHitResult)
+{
+ HTMLDocument *This = VIEWOBJ_THIS(iface);
+ FIXME("(%p)->(%d %p %p %d %p)\n", This, dwAspect, pRectBounds, pRectLoc, lCloseHint, pHitResult);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI ViewObject_GetNaturalExtent(IViewObjectEx *iface, DWORD dwAspect, LONG lindex,
+ DVTARGETDEVICE *ptd, HDC hicTargetDev, DVEXTENTINFO *pExtentInfo, LPSIZEL pSizel)
+{
+ HTMLDocument *This = VIEWOBJ_THIS(iface);
+ FIXME("(%p)->(%d %d %p %p %p %p\n", This, dwAspect,lindex, ptd,
+ hicTargetDev, pExtentInfo, pSizel);
+ return E_NOTIMPL;
+}
+
#undef VIEWOBJ_THIS
-static const IViewObject2Vtbl ViewObjectVtbl = {
+static const IViewObjectExVtbl ViewObjectVtbl = {
ViewObject_QueryInterface,
ViewObject_AddRef,
ViewObject_Release,
@@ -838,11 +878,16 @@ static const IViewObject2Vtbl ViewObjectVtbl = {
ViewObject_Unfreeze,
ViewObject_SetAdvise,
ViewObject_GetAdvise,
- ViewObject_GetExtent
+ ViewObject_GetExtent,
+ ViewObject_GetRect,
+ ViewObject_GetViewStatus,
+ ViewObject_QueryHitPoint,
+ ViewObject_QueryHitRect,
+ ViewObject_GetNaturalExtent
};
void HTMLDocument_View_Init(HTMLDocument *This)
{
This->lpOleDocumentViewVtbl = &OleDocumentViewVtbl;
- This->lpViewObject2Vtbl = &ViewObjectVtbl;
+ This->lpViewObjectExVtbl = &ViewObjectVtbl;
}