Module: wine Branch: refs/heads/master Commit: 86163e7a789cfdd75fc9318bc4a234aef4d19e9d URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=86163e7a789cfdd75fc9318b...
Author: Jacek Caban jacek@codeweavers.com Date: Tue May 23 20:03:30 2006 +0200
shdocvw: Added WebBrowser v1 implementation.
---
dlls/shdocvw/factory.c | 9 +++++++-- dlls/shdocvw/shdocvw.h | 5 ++++- dlls/shdocvw/webbrowser.c | 13 ++++++++++++- 3 files changed, 23 insertions(+), 4 deletions(-)
diff --git a/dlls/shdocvw/factory.c b/dlls/shdocvw/factory.c index 9f4dc33..519c5df 100644 --- a/dlls/shdocvw/factory.c +++ b/dlls/shdocvw/factory.c @@ -124,7 +124,8 @@ HRESULT WINAPI DllGetClassObject(REFCLSI { HRESULT hres;
- static IClassFactoryImpl WBClassFactory = {&WBCF_Vtbl, WebBrowser_Create}; + static IClassFactoryImpl WB1ClassFactory = {&WBCF_Vtbl, WebBrowserV1_Create}; + static IClassFactoryImpl WB2ClassFactory = {&WBCF_Vtbl, WebBrowserV2_Create};
TRACE("\n");
@@ -132,9 +133,13 @@ HRESULT WINAPI DllGetClassObject(REFCLSI hres = create_mozctl(riid, ppv); if(SUCCEEDED(hres)) return hres; - return IClassFactory_QueryInterface(FACTORY(&WBClassFactory), riid, ppv); + return IClassFactory_QueryInterface(FACTORY(&WB2ClassFactory), riid, ppv); }
+ if(IsEqualGUID(&CLSID_WebBrowser_V1, rclsid)) + return IClassFactory_QueryInterface(FACTORY(&WB1ClassFactory), riid, ppv); + + /* As a last resort, figure if the CLSID belongs to a 'Shell Instance Object' */ return SHDOCVW_GetShellInstanceObjectClassObject(rclsid, riid, ppv); } diff --git a/dlls/shdocvw/shdocvw.h b/dlls/shdocvw/shdocvw.h index b1ea6ea..146035a 100644 --- a/dlls/shdocvw/shdocvw.h +++ b/dlls/shdocvw/shdocvw.h @@ -104,6 +104,8 @@ typedef struct {
LONG ref;
+ INT version; + IOleClientSite *client; IOleContainer *container; IOleInPlaceSite *inplace; @@ -182,7 +184,8 @@ void DocHost_ClientSite_Release(DocHost* void ConnectionPointContainer_Init(ConnectionPointContainer*,IUnknown*); void ConnectionPointContainer_Destroy(ConnectionPointContainer*);
-HRESULT WebBrowser_Create(IUnknown*,REFIID,void**); +HRESULT WebBrowserV1_Create(IUnknown*,REFIID,void**); +HRESULT WebBrowserV2_Create(IUnknown*,REFIID,void**);
void create_doc_view_hwnd(DocHost*); void deactivate_document(DocHost*); diff --git a/dlls/shdocvw/webbrowser.c b/dlls/shdocvw/webbrowser.c index b4a93b4..7ab2ffc 100644 --- a/dlls/shdocvw/webbrowser.c +++ b/dlls/shdocvw/webbrowser.c @@ -918,7 +918,7 @@ static const IWebBrowser2Vtbl WebBrowser WebBrowser_put_Resizable };
-HRESULT WebBrowser_Create(IUnknown *pOuter, REFIID riid, void **ppv) +static HRESULT WebBrowser_Create(INT version, IUnknown *pOuter, REFIID riid, void **ppv) { WebBrowser *ret; HRESULT hres; @@ -929,6 +929,7 @@ HRESULT WebBrowser_Create(IUnknown *pOut
ret->lpWebBrowser2Vtbl = &WebBrowser2Vtbl; ret->ref = 0; + ret->version = version;
DocHost_Init(&ret->doc_host, (IDispatch*)WEBBROWSER2(ret));
@@ -954,3 +955,13 @@ HRESULT WebBrowser_Create(IUnknown *pOut
return hres; } + +HRESULT WebBrowserV1_Create(IUnknown *pOuter, REFIID riid, void **ppv) +{ + return WebBrowser_Create(1, pOuter, riid, ppv); +} + +HRESULT WebBrowserV2_Create(IUnknown *pOuter, REFIID riid, void **ppv) +{ + return WebBrowser_Create(2, pOuter, riid, ppv); +}