Jacek Caban : mshtml: Added IHTMLObjectElement::put_width implementation.
Alexandre Julliard
julliard at winehq.org
Thu Aug 16 15:26:14 CDT 2012
Module: wine
Branch: master
Commit: d98225fff9d083792c4c324f714bd4b17a7dedd0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d98225fff9d083792c4c324f714bd4b17a7dedd0
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Aug 16 15:42:32 2012 +0200
mshtml: Added IHTMLObjectElement::put_width implementation.
---
dlls/mshtml/htmlobject.c | 29 +++++++++++++++++++++++++++--
dlls/mshtml/pluginhost.c | 17 +++++++++++++++++
dlls/mshtml/pluginhost.h | 1 +
3 files changed, 45 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/htmlobject.c b/dlls/mshtml/htmlobject.c
index 0755463..6c21814 100644
--- a/dlls/mshtml/htmlobject.c
+++ b/dlls/mshtml/htmlobject.c
@@ -246,8 +246,33 @@ static HRESULT WINAPI HTMLObjectElement_get_form(IHTMLObjectElement *iface, IHTM
static HRESULT WINAPI HTMLObjectElement_put_width(IHTMLObjectElement *iface, VARIANT v)
{
HTMLObjectElement *This = impl_from_IHTMLObjectElement(iface);
- FIXME("(%p)->(%s)\n", This, debugstr_variant(&v));
- return E_NOTIMPL;
+ nsAString width_str;
+ PRUnichar buf[12];
+ nsresult nsres;
+
+ TRACE("(%p)->(%s)\n", This, debugstr_variant(&v));
+
+ switch(V_VT(&v)) {
+ case VT_I4: {
+ static const WCHAR formatW[] = {'%','d',0};
+ sprintfW(buf, formatW, V_I4(&v));
+ break;
+ }
+ default:
+ FIXME("unimplemented for arg %s\n", debugstr_variant(&v));
+ return E_NOTIMPL;
+ }
+
+ nsAString_InitDepend(&width_str, buf);
+ nsres = nsIDOMHTMLObjectElement_SetWidth(This->nsobject, &width_str);
+ nsAString_Finish(&width_str);
+ if(NS_FAILED(nsres)) {
+ FIXME("SetWidth failed: %08x\n", nsres);
+ return E_FAIL;
+ }
+
+ notif_container_change(&This->plugin_container, DISPID_UNKNOWN);
+ return S_OK;
}
static HRESULT WINAPI HTMLObjectElement_get_width(IHTMLObjectElement *iface, VARIANT *p)
diff --git a/dlls/mshtml/pluginhost.c b/dlls/mshtml/pluginhost.c
index 8fb0bfb..ee7773f 100644
--- a/dlls/mshtml/pluginhost.c
+++ b/dlls/mshtml/pluginhost.c
@@ -352,6 +352,23 @@ static void notif_enabled(PluginHost *plugin_host)
}
}
+void notif_container_change(HTMLPluginContainer *plugin_container, DISPID dispid)
+{
+ IOleControl *ole_control;
+ HRESULT hres;
+
+ if(!plugin_container->plugin_host || !plugin_container->plugin_host->plugin_unk)
+ return;
+
+ notif_enabled(plugin_container->plugin_host);
+
+ hres = IUnknown_QueryInterface(plugin_container->plugin_host->plugin_unk, &IID_IOleControl, (void**)&ole_control);
+ if(SUCCEEDED(hres)) {
+ IOleControl_OnAmbientPropertyChange(ole_control, dispid);
+ IOleControl_Release(ole_control);
+ }
+}
+
HRESULT get_plugin_disp(HTMLPluginContainer *plugin_container, IDispatch **ret)
{
PluginHost *host;
diff --git a/dlls/mshtml/pluginhost.h b/dlls/mshtml/pluginhost.h
index e3acf61..d776885 100644
--- a/dlls/mshtml/pluginhost.h
+++ b/dlls/mshtml/pluginhost.h
@@ -70,3 +70,4 @@ HRESULT create_ip_frame(IOleInPlaceFrame**) DECLSPEC_HIDDEN;
HRESULT get_plugin_disp(HTMLPluginContainer*,IDispatch**) DECLSPEC_HIDDEN;
HRESULT get_plugin_dispid(HTMLPluginContainer*,WCHAR*,DISPID*) DECLSPEC_HIDDEN;
HRESULT invoke_plugin_prop(HTMLPluginContainer*,DISPID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*) DECLSPEC_HIDDEN;
+void notif_container_change(HTMLPluginContainer*,DISPID);
More information about the wine-cvs
mailing list