SHDOCVW: Make IQuickActivate interface heap based
Jacek Caban
jack at itma.pwr.wroc.pl
Thu Sep 8 16:23:33 CDT 2005
Changelog:
Make IQuickActivate interface heap based
-------------- next part --------------
Index: dlls/shdocvw/misc.c
===================================================================
RCS file: /home/wine/wine/dlls/shdocvw/misc.c,v
retrieving revision 1.12
diff -u -p -r1.12 misc.c
--- dlls/shdocvw/misc.c 6 Jun 2005 19:50:36 -0000 1.12
+++ dlls/shdocvw/misc.c 8 Sep 2005 21:19:14 -0000
@@ -1,5 +1,5 @@
/*
- * Implementation of miscellaneous interfaces for IE Web Browser control:
+ * Implementation of miscellaneous interfaces for WebBrowser control:
*
* - IQuickActivate
*
@@ -29,66 +29,65 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw);
* Implement the IQuickActivate interface
*/
-static HRESULT WINAPI WBQA_QueryInterface(LPQUICKACTIVATE iface,
- REFIID riid, LPVOID *ppobj)
-{
- FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid));
+#define QUICKACT_THIS(iface) DEFINE_THIS(WebBrowser, QuickActivate, iface)
- if (ppobj == NULL) return E_POINTER;
-
- return E_NOINTERFACE;
+static HRESULT WINAPI QuickActivate_QueryInterface(IQuickActivate *iface,
+ REFIID riid, LPVOID *ppobj)
+{
+ WebBrowser *This = QUICKACT_THIS(iface);
+ return IWebBrowser_QueryInterface(WEBBROWSER(This), riid, ppobj);
}
-static ULONG WINAPI WBQA_AddRef(LPQUICKACTIVATE iface)
+static ULONG WINAPI QuickActivate_AddRef(IQuickActivate *iface)
{
- SHDOCVW_LockModule();
-
- return 2; /* non-heap based object */
+ WebBrowser *This = QUICKACT_THIS(iface);
+ return IWebBrowser_AddRef(WEBBROWSER(This));
}
-static ULONG WINAPI WBQA_Release(LPQUICKACTIVATE iface)
+static ULONG WINAPI QuickActivate_Release(IQuickActivate *iface)
{
- SHDOCVW_UnlockModule();
-
- return 1; /* non-heap based object */
+ WebBrowser *This = QUICKACT_THIS(iface);
+ return IWebBrowser_Release(WEBBROWSER(This));
}
-/* Alternative interface for quicker, easier activation of a control. */
-static HRESULT WINAPI WBQA_QuickActivate(LPQUICKACTIVATE iface,
- QACONTAINER *pQaContainer,
- QACONTROL *pQaControl)
+static HRESULT WINAPI QuickActivate_QuickActivate(IQuickActivate *iface,
+ QACONTAINER *pQaContainer, QACONTROL *pQaControl)
{
- FIXME("stub: QACONTAINER = %p, QACONTROL = %p\n", pQaContainer, pQaControl);
- return S_OK;
+ WebBrowser *This = QUICKACT_THIS(iface);
+ FIXME("(%p)->(%p %p)\n", This, pQaContainer, pQaControl);
+ return E_NOTIMPL;
}
-static HRESULT WINAPI WBQA_SetContentExtent(LPQUICKACTIVATE iface, LPSIZEL pSizel)
+static HRESULT WINAPI QuickActivate_SetContentExtent(IQuickActivate *iface, LPSIZEL pSizel)
{
- FIXME("stub: LPSIZEL = %p\n", pSizel);
- return E_NOINTERFACE;
+ WebBrowser *This = QUICKACT_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pSizel);
+ return E_NOTIMPL;
}
-static HRESULT WINAPI WBQA_GetContentExtent(LPQUICKACTIVATE iface, LPSIZEL pSizel)
+static HRESULT WINAPI QuickActivate_GetContentExtent(IQuickActivate *iface, LPSIZEL pSizel)
{
- FIXME("stub: LPSIZEL = %p\n", pSizel);
- return E_NOINTERFACE;
+ WebBrowser *This = QUICKACT_THIS(iface);
+ FIXME("(%p)->(%p)\n", This, pSizel);
+ return E_NOTIMPL;
}
-/**********************************************************************
- * IQuickActivate virtual function table for IE Web Browser component
- */
+#undef QUICKACT_THIS
-static const IQuickActivateVtbl WBQA_Vtbl =
+static const IQuickActivateVtbl QuickActivateVtbl =
{
- WBQA_QueryInterface,
- WBQA_AddRef,
- WBQA_Release,
- WBQA_QuickActivate,
- WBQA_SetContentExtent,
- WBQA_GetContentExtent
+ QuickActivate_QueryInterface,
+ QuickActivate_AddRef,
+ QuickActivate_Release,
+ QuickActivate_QuickActivate,
+ QuickActivate_SetContentExtent,
+ QuickActivate_GetContentExtent
};
-IQuickActivateImpl SHDOCVW_QuickActivate = {&WBQA_Vtbl};
+void WebBrowser_Misc_Init(WebBrowser *This)
+{
+ This->lpQuickActivateVtbl = &QuickActivateVtbl;
+}
/**********************************************************************
* OpenURL (SHDOCVW.@)
Index: dlls/shdocvw/shdocvw.h
===================================================================
RCS file: /home/wine/wine/dlls/shdocvw/shdocvw.h,v
retrieving revision 1.19
diff -u -p -r1.19 shdocvw.h
--- dlls/shdocvw/shdocvw.h 8 Sep 2005 18:55:50 -0000 1.19
+++ dlls/shdocvw/shdocvw.h 8 Sep 2005 21:19:14 -0000
@@ -60,6 +60,7 @@ typedef struct {
const IPersistStorageVtbl *lpPersistStorageVtbl;
const IPersistStreamInitVtbl *lpPersistStreamInitVtbl;
const IProvideClassInfo2Vtbl *lpProvideClassInfoVtbl;
+ const IQuickActivateVtbl *lpQuickActivateVtbl;
LONG ref;
} WebBrowser;
@@ -71,27 +72,16 @@ typedef struct {
#define PERSTORAGE(x) ((IPersistStorage*) &(x)->lpPersistStorageVtbl)
#define PERSTRINIT(x) ((IPersistStreamInit*) &(x)->lpPersistStreamInitVtbl)
#define CLASSINFO(x) ((IProvideClassInfo2*) &(x)->lpProvideClassInfoVtbl)
+#define QUICKACT(x) ((IQuickActivate*) &(x)->lpQuickActivateVtbl)
void WebBrowser_OleObject_Init(WebBrowser*);
void WebBrowser_Persist_Init(WebBrowser*);
void WebBrowser_ClassInfo_Init(WebBrowser*);
+void WebBrowser_Misc_Init(WebBrowser*);
HRESULT WebBrowser_Create(IUnknown*,REFIID,void**);
/**********************************************************************
- * IQuickActivate declaration for SHDOCVW.DLL
- */
-typedef struct
-{
- /* IUnknown fields */
- const IQuickActivateVtbl *lpVtbl;
- LONG ref;
-} IQuickActivateImpl;
-
-extern IQuickActivateImpl SHDOCVW_QuickActivate;
-
-
-/**********************************************************************
* IConnectionPointContainer declaration for SHDOCVW.DLL
*/
typedef struct
Index: dlls/shdocvw/webbrowser.c
===================================================================
RCS file: /home/wine/wine/dlls/shdocvw/webbrowser.c,v
retrieving revision 1.17
diff -u -p -r1.17 webbrowser.c
--- dlls/shdocvw/webbrowser.c 8 Sep 2005 18:55:50 -0000 1.17
+++ dlls/shdocvw/webbrowser.c 8 Sep 2005 21:19:14 -0000
@@ -75,8 +75,8 @@ static HRESULT WINAPI WebBrowser_QueryIn
TRACE("(%p)->(IID_IProvideClassInfo2 %p)\n", This, ppv);
*ppv = CLASSINFO(This);
}else if(IsEqualGUID (&IID_IQuickActivate, riid)) {
- FIXME("(%p)->(IID_IQuickActivate %p)\n", This, ppv);
- *ppv = &SHDOCVW_QuickActivate;
+ TRACE("(%p)->(IID_IQuickActivate %p)\n", This, ppv);
+ *ppv = QUICKACT(This);
}else if(IsEqualGUID (&IID_IConnectionPointContainer, riid)) {
FIXME("(%p)->(IID_IConnectionPointContainer %p)\n", This, ppv);
*ppv = &SHDOCVW_ConnectionPointContainer;
@@ -387,6 +387,7 @@ HRESULT WebBrowser_Create(IUnknown *pOut
WebBrowser_OleObject_Init(ret);
WebBrowser_Persist_Init(ret);
WebBrowser_ClassInfo_Init(ret);
+ WebBrowser_Misc_Init(ret);
hres = IWebBrowser_QueryInterface(WEBBROWSER(ret), riid, ppv);
if(SUCCEEDED(hres)) {
More information about the wine-patches
mailing list