Module: wine Branch: master Commit: c65f4c495684380d67ff169ddade3f57b9d7cd69 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c65f4c495684380d67ff169dda...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Dec 13 16:00:29 2010 +0100
mshtml: Added support for plugin in place activation.
---
dlls/mshtml/pluginhost.c | 28 ++++++++++++++++++++++++---- dlls/mshtml/pluginhost.h | 1 + 2 files changed, 25 insertions(+), 4 deletions(-)
diff --git a/dlls/mshtml/pluginhost.c b/dlls/mshtml/pluginhost.c index 5b8ab71..8a7e2a6 100644 --- a/dlls/mshtml/pluginhost.c +++ b/dlls/mshtml/pluginhost.c @@ -298,6 +298,8 @@ static ULONG WINAPI PHClientSite_Release(IOleClientSite *iface) TRACE("(%p) ref=%d\n", This, ref);
if(!ref) { + if(This->ip_object) + IOleInPlaceObject_Release(This->ip_object); list_remove(&This->entry); if(This->element) This->element->plugin_host = NULL; @@ -351,8 +353,10 @@ static HRESULT WINAPI PHClientSite_GetContainer(IOleClientSite *iface, IOleConta static HRESULT WINAPI PHClientSite_ShowObject(IOleClientSite *iface) { PluginHost *This = impl_from_IOleClientSite(iface); - FIXME("(%p)\n", This); - return E_NOTIMPL; + + TRACE("(%p)\n", This); + + return S_OK; }
static HRESULT WINAPI PHClientSite_OnShowWindow(IOleClientSite *iface, BOOL fShow) @@ -684,8 +688,24 @@ static HRESULT WINAPI PHInPlaceSite_OnPosRectChange(IOleInPlaceSiteEx *iface, LP static HRESULT WINAPI PHInPlaceSiteEx_OnInPlaceActivateEx(IOleInPlaceSiteEx *iface, BOOL *pfNoRedraw, DWORD dwFlags) { PluginHost *This = impl_from_IOleInPlaceSiteEx(iface); - FIXME("(%p)->(%p %x)\n", This, pfNoRedraw, dwFlags); - return E_NOTIMPL; + HWND hwnd; + HRESULT hres; + + TRACE("(%p)->(%p %x)\n", This, pfNoRedraw, dwFlags); + + if(This->ip_object) + return S_OK; + + hres = IUnknown_QueryInterface(This->plugin_unk, &IID_IOleInPlaceObject, (void**)&This->ip_object); + if(FAILED(hres)) + return hres; + + hres = IOleInPlaceObject_GetWindow(This->ip_object, &hwnd); + if(SUCCEEDED(hres)) + FIXME("Use hwnd %p\n", hwnd); + + *pfNoRedraw = FALSE; + return S_OK; }
static HRESULT WINAPI PHInPlaceSiteEx_OnInPlaceDeactivateEx(IOleInPlaceSiteEx *iface, BOOL fNoRedraw) diff --git a/dlls/mshtml/pluginhost.h b/dlls/mshtml/pluginhost.h index ee1fed6..30af989 100644 --- a/dlls/mshtml/pluginhost.h +++ b/dlls/mshtml/pluginhost.h @@ -31,6 +31,7 @@ typedef struct { LONG ref;
IUnknown *plugin_unk; + IOleInPlaceObject *ip_object; CLSID clsid; HWND hwnd; RECT rect;