Module: wine Branch: master Commit: 40d31d869b4ddb667e2604ba7452c1b274f8680e URL: http://source.winehq.org/git/wine.git/?a=commit;h=40d31d869b4ddb667e2604ba74...
Author: Jacek Caban jacek@codeweavers.com Date: Thu Nov 9 10:47:10 2006 +0100
mshtml: Added IDM_FORECOLOR implementation.
---
dlls/mshtml/olecmd.c | 38 ++++++++++++++++++++++++++++++++++++-- dlls/mshtml/tests/htmldoc.c | 1 + 2 files changed, 37 insertions(+), 2 deletions(-)
diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c index b63af0f..28f7189 100644 --- a/dlls/mshtml/olecmd.c +++ b/dlls/mshtml/olecmd.c @@ -42,6 +42,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml); #define NSCMD_BOLD "cmd_bold" #define NSCMD_ITALIC "cmd_italic" #define NSCMD_UNDERLINE "cmd_underline" +#define NSCMD_FONTCOLOR "cmd_fontColor" + +#define NSSTATE_ATTRIBUTE "state_attribute"
/********************************************************** * IOleCommandTarget implementation @@ -381,6 +384,35 @@ static HRESULT exec_fontname(HTMLDocumen return S_OK; }
+static HRESULT exec_forecolor(HTMLDocument *This, VARIANT *in, VARIANT *out) +{ + TRACE("(%p)->(%p %p)\n", This, in, out); + + if(in) { + if(V_VT(in) == VT_I4) { + nsICommandParams *nsparam = create_nscommand_params(); + char color_str[10]; + + sprintf(color_str, "#%02x%02x%02x", + V_I4(in)&0xff, (V_I4(in)>>8)&0xff, (V_I4(in)>>16)&0xff); + + nsICommandParams_SetCStringValue(nsparam, NSSTATE_ATTRIBUTE, color_str); + do_ns_command(This->nscontainer, NSCMD_FONTCOLOR, nsparam); + + nsICommandParams_Release(nsparam); + }else { + FIXME("unsupported in vt=%d\n", V_VT(in)); + } + } + + if(out) { + FIXME("unsupported out\n"); + return E_NOTIMPL; + } + + return S_OK; +} + static HRESULT exec_fontsize(HTMLDocument *This, VARIANT *in, VARIANT *out) { FIXME("(%p)->(%p %p)\n", This, in, out); @@ -658,8 +690,8 @@ static HRESULT WINAPI OleCommandTarget_Q prgCmds[i].cmdf = query_edit_status(This, NSCMD_BOLD); break; case IDM_FORECOLOR: - FIXME("CGID_MSHTML: IDM_FORECOLOR\n"); - prgCmds[i].cmdf = OLECMDF_SUPPORTED|OLECMDF_ENABLED; + TRACE("CGID_MSHTML: IDM_FORECOLOR\n"); + prgCmds[i].cmdf = query_edit_status(This, NULL); break; case IDM_ITALIC: TRACE("CGID_MSHTML: IDM_ITALIC\n"); @@ -756,6 +788,8 @@ static HRESULT WINAPI OleCommandTarget_E if(pvaIn || pvaOut) FIXME("unsupported arguments\n"); return exec_bold(This); + case IDM_FORECOLOR: + return exec_forecolor(This, pvaIn, pvaOut); case IDM_ITALIC: if(pvaIn || pvaOut) FIXME("unsupported arguments\n"); diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c index 68e2a11..2ae2dbb 100644 --- a/dlls/mshtml/tests/htmldoc.c +++ b/dlls/mshtml/tests/htmldoc.c @@ -2042,6 +2042,7 @@ static void test_MSHTML_QueryStatus(IUnk test_QueryStatus(unk, &CGID_MSHTML, IDM_FONTNAME, cmdf); test_QueryStatus(unk, &CGID_MSHTML, IDM_FONTSIZE, cmdf); test_QueryStatus(unk, &CGID_MSHTML, IDM_BOLD, cmdf); + test_QueryStatus(unk, &CGID_MSHTML, IDM_FORECOLOR, cmdf); test_QueryStatus(unk, &CGID_MSHTML, IDM_ITALIC, cmdf); test_QueryStatus(unk, &CGID_MSHTML, IDM_UNDERLINE, cmdf); }