diff --git a/dlls/mshtml/editor.c b/dlls/mshtml/editor.c index d6bcf2af7c4..4b455a0edac 100644 --- a/dlls/mshtml/editor.c +++ b/dlls/mshtml/editor.c @@ -37,11 +37,19 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml); +#define NSCMD_ALIGN "cmd_align" +#define NSCMD_BOLD "cmd_bold" #define NSCMD_FONTCOLOR "cmd_fontColor" #define NSCMD_FONTFACE "cmd_fontFace" +#define NSCMD_ITALIC "cmd_italic" +#define NSCMD_UNDERLINE "cmd_underline" #define NSSTATE_ATTRIBUTE "state_attribute" +#define NSALIGN_CENTER "center" +#define NSALIGN_LEFT "left" +#define NSALIGN_RIGHT "right" + #define DOM_VK_LEFT VK_LEFT #define DOM_VK_UP VK_UP #define DOM_VK_RIGHT VK_RIGHT @@ -109,6 +117,20 @@ static nsresult get_ns_command_state(NSContainer *This, const char *cmd, nsIComm return nsres; } +static void set_ns_align(HTMLDocument *This, const char *align_str) +{ + nsICommandParams *nsparam; + + if(!This->nscontainer) + return; + + nsparam = create_nscommand_params(); + nsICommandParams_SetCStringValue(nsparam, NSSTATE_ATTRIBUTE, align_str); + + do_ns_command(This->nscontainer, NSCMD_ALIGN, nsparam); + + nsICommandParams_Release(nsparam); +} static nsISelection *get_ns_selection(HTMLDocument *This) { nsIDOMWindow *dom_window; @@ -275,7 +297,7 @@ void set_font_size(HTMLDocument *This, LPCWSTR size) FIXME("range_cnt %d not supprted\n", range_cnt); nsIDOMDocument_CreateElement(nsdoc, &font_str, &elem); - nsIDOMElement_SetAttribute(elem, &size_str, &val_str); + nsIDOMElement_SetAttribute(elem, &size_str, &val_str); nsISelection_GetRangeAt(nsselection, 0, &range); nsISelection_GetIsCollapsed(nsselection, &collapsed); @@ -632,9 +654,83 @@ static HRESULT exec_fontsize(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, return S_OK; } +static HRESULT exec_bold(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) +{ + TRACE("(%p)\n", This); + + if(in || out) + FIXME("unsupported args\n"); + + if(This->nscontainer) + do_ns_command(This->nscontainer, NSCMD_BOLD, NULL); + + return S_OK; +} + +static HRESULT exec_italic(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) +{ + TRACE("(%p)\n", This); + + if(in || out) + FIXME("unsupported args\n"); + + if(This->nscontainer) + do_ns_command(This->nscontainer, NSCMD_ITALIC, NULL); + + return S_OK; +} + +static HRESULT exec_justifycenter(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) +{ + TRACE("(%p)\n", This); + + if(in || out) + FIXME("unsupported args\n"); + + set_ns_align(This, NSALIGN_CENTER); + return S_OK; +} + +static HRESULT exec_justifyleft(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) +{ + TRACE("(%p)\n", This); + + if(in || out) + FIXME("unsupported args\n"); + + set_ns_align(This, NSALIGN_LEFT); + return S_OK; +} + +static HRESULT exec_justifyright(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) +{ + TRACE("(%p)\n", This); + set_ns_align(This, NSALIGN_RIGHT); + return S_OK; +} + +static HRESULT exec_underline(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) +{ + TRACE("(%p)\n", This); + + if(in || out) + FIXME("unsupported args\n"); + + if(This->nscontainer) + do_ns_command(This->nscontainer, NSCMD_UNDERLINE, NULL); + + return S_OK; +} + const cmdtable_t editmode_cmds[] = { {IDM_FONTNAME, NULL, exec_fontname}, {IDM_FONTSIZE, NULL, exec_fontsize}, {IDM_FORECOLOR, NULL, exec_forecolor}, + {IDM_BOLD, NULL, exec_bold}, + {IDM_ITALIC, NULL, exec_italic}, + {IDM_JUSTIFYCENTER, NULL, exec_justifycenter}, + {IDM_JUSTIFYRIGHT, NULL, exec_justifyright}, + {IDM_JUSTIFYLEFT, NULL, exec_justifyleft}, + {IDM_UNDERLINE, NULL, exec_underline}, {0,NULL,NULL} }; diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c index 8ad7f40c2c5..966a10312ea 100644 --- a/dlls/mshtml/olecmd.c +++ b/dlls/mshtml/olecmd.c @@ -560,20 +560,6 @@ static DWORD query_align_status(HTMLDocument *This, const char *align_str) return OLECMDF_SUPPORTED | OLECMDF_ENABLED | (align && !strcmp(align_str, align) ? OLECMDF_LATCHED : 0); } -static void set_ns_align(HTMLDocument *This, const char *align_str) -{ - nsICommandParams *nsparam; - - if(!This->nscontainer) - return; - - nsparam = create_nscommand_params(); - nsICommandParams_SetCStringValue(nsparam, NSSTATE_ATTRIBUTE, align_str); - - do_ns_command(This->nscontainer, NSCMD_ALIGN, nsparam); - - nsICommandParams_Release(nsparam); -} static HRESULT exec_mshtml_copy(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) { @@ -593,57 +579,6 @@ static HRESULT exec_mshtml_paste(HTMLDocument *This, DWORD cmdexecopt, VARIANT * return E_NOTIMPL; } -static HRESULT exec_bold(HTMLDocument *This) -{ - TRACE("(%p)\n", This); - - if(This->nscontainer) - do_ns_command(This->nscontainer, NSCMD_BOLD, NULL); - - return S_OK; -} - -static HRESULT exec_italic(HTMLDocument *This) -{ - TRACE("(%p)\n", This); - - if(This->nscontainer) - do_ns_command(This->nscontainer, NSCMD_ITALIC, NULL); - - return S_OK; -} - -static HRESULT exec_justifycenter(HTMLDocument *This) -{ - TRACE("(%p)\n", This); - set_ns_align(This, NSALIGN_CENTER); - return S_OK; -} - -static HRESULT exec_justifyleft(HTMLDocument *This) -{ - TRACE("(%p)\n", This); - set_ns_align(This, NSALIGN_LEFT); - return S_OK; -} - -static HRESULT exec_justifyright(HTMLDocument *This) -{ - TRACE("(%p)\n", This); - set_ns_align(This, NSALIGN_RIGHT); - return S_OK; -} - -static HRESULT exec_underline(HTMLDocument *This) -{ - TRACE("(%p)\n", This); - - if(This->nscontainer) - do_ns_command(This->nscontainer, NSCMD_UNDERLINE, NULL); - - return S_OK; -} - static HRESULT exec_browsemode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) { WARN("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out); @@ -1092,30 +1027,6 @@ static HRESULT WINAPI OleCommandTarget_Exec(IOleCommandTarget *iface, const GUID return hres; switch(nCmdID) { - case IDM_BOLD: - if(pvaIn || pvaOut) - FIXME("unsupported arguments\n"); - return exec_bold(This); - case IDM_ITALIC: - if(pvaIn || pvaOut) - FIXME("unsupported arguments\n"); - return exec_italic(This); - case IDM_JUSTIFYCENTER: - if(pvaIn || pvaOut) - FIXME("unsupported arguments\n"); - return exec_justifycenter(This); - case IDM_JUSTIFYLEFT: - if(pvaIn || pvaOut) - FIXME("unsupported arguments\n"); - return exec_justifyleft(This); - case IDM_JUSTIFYRIGHT: - if(pvaIn || pvaOut) - FIXME("unsupported arguments\n"); - return exec_justifyright(This); - case IDM_UNDERLINE: - if(pvaIn || pvaOut) - FIXME("unsupported arguments\n"); - return exec_underline(This); case IDM_BASELINEFONT3: return exec_baselinefont3(This); case IDM_HORIZONTALLINE: