wine/dlls/shdocvw oleobject.c shdocvw.h webbro ...
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Dec 1 06:00:34 CST 2005
ChangeSet ID: 21591
CVSROOT: /opt/cvs-commit
Module name: wine
Changes by: julliard at winehq.org 2005/12/01 06:00:33
Modified files:
dlls/shdocvw : oleobject.c shdocvw.h webbrowser.c
Log message:
Jacek Caban <jacek at codeweavers.com>
Added IOleInPlaceActiveObject stub implementation.
Patch: http://cvs.winehq.org/patch.py?id=21591
Old revision New revision Changes Path
1.21 1.22 +95 -5 wine/dlls/shdocvw/oleobject.c
1.36 1.37 +2 -0 wine/dlls/shdocvw/shdocvw.h
1.30 1.31 +3 -0 wine/dlls/shdocvw/webbrowser.c
Index: wine/dlls/shdocvw/oleobject.c
diff -u -p wine/dlls/shdocvw/oleobject.c:1.21 wine/dlls/shdocvw/oleobject.c:1.22
--- wine/dlls/shdocvw/oleobject.c:1.21 1 Dec 2005 12: 0:33 -0000
+++ wine/dlls/shdocvw/oleobject.c 1 Dec 2005 12: 0:33 -0000
@@ -116,7 +116,7 @@ static HRESULT WINAPI OleObject_SetClien
This->client = pClientSite;
if(!pClientSite)
return S_OK;
-
+
IOleClientSite_AddRef(pClientSite);
create_shell_embedding_hwnd(This);
@@ -237,7 +237,6 @@ static HRESULT WINAPI OleObject_DoVerb(I
This->pos_rect.bottom-This->pos_rect.top,
SWP_NOZORDER | SWP_SHOWWINDOW);
-
if(This->client) {
IOleClientSite_ShowObject(This->client);
IOleClientSite_GetContainer(This->client, &This->container);
@@ -556,11 +555,102 @@ static const IOleControlVtbl OleControlV
OleControl_FreezeEvents
};
+#define ACTIVEOBJ_THIS(iface) DEFINE_THIS(WebBrowser, OleInPlaceActiveObject, iface)
+
+static HRESULT WINAPI InPlaceActiveObject_QueryInterface(IOleInPlaceActiveObject *iface,
+ REFIID riid, void **ppv)
+{
+ WebBrowser *This = ACTIVEOBJ_THIS(iface);
+ return IWebBrowser2_QueryInterface(WEBBROWSER2(This), riid, ppv);
+}
+
+static ULONG WINAPI InPlaceActiveObject_AddRef(IOleInPlaceActiveObject *iface)
+{
+ WebBrowser *This = ACTIVEOBJ_THIS(iface);
+ return IWebBrowser2_AddRef(WEBBROWSER2(This));
+}
+
+static ULONG WINAPI InPlaceActiveObject_Release(IOleInPlaceActiveObject *iface)
+{
+ WebBrowser *This = ACTIVEOBJ_THIS(iface);
+ return IWebBrowser2_Release(WEBBROWSER2(This));
+}
+
+static HRESULT WINAPI InPlaceActiveObject_GetWindow(IOleInPlaceActiveObject *iface,
+ HWND *phwnd)
+{
+ WebBrowser *This = ACTIVEOBJ_THIS(iface);
+ return IOleInPlaceObject_GetWindow(INPLACEOBJ(This), phwnd);
+}
+
+static HRESULT WINAPI InPlaceActiveObject_ContextSensitiveHelp(IOleInPlaceActiveObject *iface,
+ BOOL fEnterMode)
+{
+ WebBrowser *This = ACTIVEOBJ_THIS(iface);
+ return IOleInPlaceObject_ContextSensitiveHelp(INPLACEOBJ(This), fEnterMode);
+}
+
+static HRESULT WINAPI InPlaceActiveObject_TranslateAccelerator(IOleInPlaceActiveObject *iface,
+ LPMSG lpmsg)
+{
+ WebBrowser *This = ACTIVEOBJ_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, lpmsg);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InPlaceActiveObject_OnFrameWindowActivate(IOleInPlaceActiveObject *iface,
+ BOOL fActivate)
+{
+ WebBrowser *This = ACTIVEOBJ_THIS(iface);
+ FIXME("(%p)->(%x)\n", This, fActivate);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InPlaceActiveObject_OnDocWindowActivate(IOleInPlaceActiveObject *iface,
+ BOOL fActivate)
+{
+ WebBrowser *This = ACTIVEOBJ_THIS(iface);
+ FIXME("(%p)->(%x)\n", This, fActivate);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InPlaceActiveObject_ResizeBorder(IOleInPlaceActiveObject *iface,
+ LPCRECT lprcBorder, IOleInPlaceUIWindow *pUIWindow, BOOL fFrameWindow)
+{
+ WebBrowser *This = ACTIVEOBJ_THIS(iface);
+ FIXME("(%p)->(%p %p %x)\n", This, lprcBorder, pUIWindow, fFrameWindow);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI InPlaceActiveObject_EnableModeless(IOleInPlaceActiveObject *iface,
+ BOOL fEnable)
+{
+ WebBrowser *This = ACTIVEOBJ_THIS(iface);
+ FIXME("(%p)->(%x)\n", This, fEnable);
+ return E_NOTIMPL;
+}
+
+#undef ACTIVEOBJ_THIS
+
+static const IOleInPlaceActiveObjectVtbl OleInPlaceActiveObjectVtbl = {
+ InPlaceActiveObject_QueryInterface,
+ InPlaceActiveObject_AddRef,
+ InPlaceActiveObject_Release,
+ InPlaceActiveObject_GetWindow,
+ InPlaceActiveObject_ContextSensitiveHelp,
+ InPlaceActiveObject_TranslateAccelerator,
+ InPlaceActiveObject_OnFrameWindowActivate,
+ InPlaceActiveObject_OnDocWindowActivate,
+ InPlaceActiveObject_ResizeBorder,
+ InPlaceActiveObject_EnableModeless
+};
+
void WebBrowser_OleObject_Init(WebBrowser *This)
{
- This->lpOleObjectVtbl = &OleObjectVtbl;
- This->lpOleInPlaceObjectVtbl = &OleInPlaceObjectVtbl;
- This->lpOleControlVtbl = &OleControlVtbl;
+ This->lpOleObjectVtbl = &OleObjectVtbl;
+ This->lpOleInPlaceObjectVtbl = &OleInPlaceObjectVtbl;
+ This->lpOleControlVtbl = &OleControlVtbl;
+ This->lpOleInPlaceActiveObjectVtbl = &OleInPlaceActiveObjectVtbl;
This->client = NULL;
This->container = NULL;
Index: wine/dlls/shdocvw/shdocvw.h
diff -u -p wine/dlls/shdocvw/shdocvw.h:1.36 wine/dlls/shdocvw/shdocvw.h:1.37
--- wine/dlls/shdocvw/shdocvw.h:1.36 1 Dec 2005 12: 0:33 -0000
+++ wine/dlls/shdocvw/shdocvw.h 1 Dec 2005 12: 0:33 -0000
@@ -71,6 +71,7 @@ typedef struct {
const IQuickActivateVtbl *lpQuickActivateVtbl;
const IConnectionPointContainerVtbl *lpConnectionPointContainerVtbl;
const IViewObject2Vtbl *lpViewObjectVtbl;
+ const IOleInPlaceActiveObjectVtbl *lpOleInPlaceActiveObjectVtbl;
/* Interfaces available for embeded document */
@@ -125,6 +126,7 @@ typedef struct {
#define CONPTCONT(x) ((IConnectionPointContainer*) &(x)->lpConnectionPointContainerVtbl)
#define VIEWOBJ(x) ((IViewObject*) &(x)->lpViewObjectVtbl);
#define VIEWOBJ2(x) ((IViewObject2*) &(x)->lpViewObjectVtbl);
+#define ACTIVEOBJ(x) ((IOleInPlaceActiveObject*) &(x)->lpOleInPlaceActiveObjectVtbl)
#define CLIENTSITE(x) ((IOleClientSite*) &(x)->lpOleClientSiteVtbl)
#define INPLACESITE(x) ((IOleInPlaceSite*) &(x)->lpOleInPlaceSiteVtbl)
Index: wine/dlls/shdocvw/webbrowser.c
diff -u -p wine/dlls/shdocvw/webbrowser.c:1.30 wine/dlls/shdocvw/webbrowser.c:1.31
--- wine/dlls/shdocvw/webbrowser.c:1.30 1 Dec 2005 12: 0:34 -0000
+++ wine/dlls/shdocvw/webbrowser.c 1 Dec 2005 12: 0:34 -0000
@@ -94,6 +94,9 @@ static HRESULT WINAPI WebBrowser_QueryIn
}else if(IsEqualGUID(&IID_IViewObject2, riid)) {
TRACE("(%p)->(IID_IViewObject2 %p)\n", This, ppv);
*ppv = VIEWOBJ2(This);
+ }else if(IsEqualGUID(&IID_IOleInPlaceActiveObject, riid)) {
+ TRACE("(%p)->(IID_IOleInPlaceActiveObject %p)\n", This, ppv);
+ *ppv = ACTIVEOBJ(This);
}
if(*ppv) {
More information about the wine-cvs
mailing list