Jacek Caban : mshtml: Added IDM_COMPOSESETTINGS implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Jun 11 08:46:40 CDT 2007


Module: wine
Branch: master
Commit: b0fc3115c96b051420247cc706db0f44f06b7257
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b0fc3115c96b051420247cc706db0f44f06b7257

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Jun 11 00:20:30 2007 +0200

mshtml: Added IDM_COMPOSESETTINGS implementation.

---

 dlls/mshtml/editor.c |   60 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 59 insertions(+), 1 deletions(-)

diff --git a/dlls/mshtml/editor.c b/dlls/mshtml/editor.c
index 12a43e1..6edf951 100644
--- a/dlls/mshtml/editor.c
+++ b/dlls/mshtml/editor.c
@@ -864,14 +864,72 @@ static HRESULT exec_outdent(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, V
 
 static HRESULT exec_composesettings(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
 {
+    WCHAR *ptr;
+
     if(out || !in || V_VT(in) != VT_BSTR) {
         WARN("invalid arg\n");
         return E_INVALIDARG;
     }
 
-    FIXME("%s\n", debugstr_w(V_BSTR(in)));
+    TRACE("(%p)->(%x %s)\n", This, cmdexecopt, debugstr_w(V_BSTR(in)));
 
     update_doc(This, UPDATE_UI);
+
+    ptr = V_BSTR(in);
+    if(*ptr == '1')
+        exec_bold(This, cmdexecopt, NULL, NULL);
+    ptr = strchrW(ptr, ',');
+    if(!ptr)
+        return S_OK;
+
+    if(*++ptr == '1')
+        exec_italic(This, cmdexecopt, NULL, NULL);
+    ptr = strchrW(ptr, ',');
+    if(!ptr)
+        return S_OK;
+
+    if(*++ptr == '1')
+        exec_underline(This, cmdexecopt, NULL, NULL);
+    ptr = strchrW(ptr, ',');
+    if(!ptr)
+        return S_OK;
+
+    if(isdigitW(*++ptr)) {
+        VARIANT v;
+
+        V_VT(&v) = VT_I4;
+        V_I4(&v) = *ptr-'0';
+
+        exec_fontsize(This, cmdexecopt, &v, NULL);
+    }
+    ptr = strchrW(ptr, ',');
+    if(!ptr)
+        return S_OK;
+
+    if(*++ptr != ',')
+        FIXME("set font color\n");
+    ptr = strchrW(ptr, ',');
+    if(!ptr)
+        return S_OK;
+
+    if(*++ptr != ',')
+        FIXME("set background color\n");
+    ptr = strchrW(ptr, ',');
+    if(!ptr)
+        return S_OK;
+
+    ptr++;
+    if(*ptr) {
+        VARIANT v;
+
+        V_VT(&v) = VT_BSTR;
+        V_BSTR(&v) = SysAllocString(ptr);
+
+        exec_fontname(This, cmdexecopt, &v, NULL);
+
+        SysFreeString(V_BSTR(&v));
+    }
+
     return S_OK;
 }
 




More information about the wine-cvs mailing list