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