From ca82a1eb0ed3ce103bae2d52474e7828b28fa49c Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Sun, 10 Jun 2007 11:32:27 +0200 Subject: [PATCH] mshtml: Move justify queries to command table. --- dlls/mshtml/editor.c | 49 +++++++++++++++++++++++++++++++++++++++++--- dlls/mshtml/olecmd.c | 32 ----------------------------- 2 files changed, 46 insertions(+), 35 deletions(-) diff --git a/dlls/mshtml/editor.c b/dlls/mshtml/editor.c index 2b2596a8a2b..6bdc0a0df92 100644 --- a/dlls/mshtml/editor.c +++ b/dlls/mshtml/editor.c @@ -136,6 +136,29 @@ static void set_ns_align(HTMLDocument *This, const char *align_str) nsICommandParams_Release(nsparam); } + +static DWORD query_align_status(HTMLDocument *This, const char *align_str) +{ + nsICommandParams *nsparam; + char *align = NULL; + + if(This->usermode != EDITMODE || This->readystate < READYSTATE_INTERACTIVE) + return OLECMDF_SUPPORTED; + + if(This->nscontainer) { + nsparam = create_nscommand_params(); + get_ns_command_state(This->nscontainer, NSCMD_ALIGN, nsparam); + + nsICommandParams_GetCStringValue(nsparam, NSSTATE_ATTRIBUTE, &align); + + nsICommandParams_Release(nsparam); + } + + return OLECMDF_SUPPORTED | OLECMDF_ENABLED + | (align && !strcmp(align_str, align) ? OLECMDF_LATCHED : 0); +} + + static nsISelection *get_ns_selection(HTMLDocument *This) { nsIDOMWindow *dom_window; @@ -685,6 +708,26 @@ static HRESULT exec_italic(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VA return S_OK; } +static HRESULT query_justify(HTMLDocument *This, OLECMD *cmd) +{ + switch(cmd->cmdID) { + case IDM_JUSTIFYCENTER: + TRACE("(%p) IDM_JUSTIFYCENTER\n", This); + cmd->cmdf = query_align_status(This, NSALIGN_CENTER); + break; + case IDM_JUSTIFYLEFT: + TRACE("(%p) IDM_JUSTIFYLEFT\n", This); + cmd->cmdf = query_align_status(This, NSALIGN_LEFT); + break; + case IDM_JUSTIFYRIGHT: + TRACE("(%p) IDM_JUSTIFYRIGHT\n", This); + cmd->cmdf = query_align_status(This, NSALIGN_RIGHT); + break; + } + + return S_OK; +} + static HRESULT exec_justifycenter(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out) { TRACE("(%p)\n", This); @@ -810,9 +853,9 @@ const cmdtable_t editmode_cmds[] = { {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_JUSTIFYCENTER, query_justify, exec_justifycenter}, + {IDM_JUSTIFYRIGHT, query_justify, exec_justifyright}, + {IDM_JUSTIFYLEFT, query_justify, exec_justifyleft}, {IDM_UNDERLINE, NULL, exec_underline}, {IDM_HORIZONTALLINE, NULL, exec_horizontalline}, {IDM_ORDERLIST, NULL, exec_orderlist}, diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c index e78d0380880..df346eb17a2 100644 --- a/dlls/mshtml/olecmd.c +++ b/dlls/mshtml/olecmd.c @@ -510,26 +510,6 @@ static DWORD query_edit_status(HTMLDocument *This, const char *nscmd) return OLECMDF_SUPPORTED | OLECMDF_ENABLED | (b ? OLECMDF_LATCHED : 0); } -static DWORD query_align_status(HTMLDocument *This, const char *align_str) -{ - nsICommandParams *nsparam; - char *align = NULL; - - if(This->usermode != EDITMODE || This->readystate < READYSTATE_INTERACTIVE) - return OLECMDF_SUPPORTED; - - if(This->nscontainer) { - nsparam = create_nscommand_params(); - get_ns_command_state(This->nscontainer, NSCMD_ALIGN, nsparam); - - nsICommandParams_GetCStringValue(nsparam, NSSTATE_ATTRIBUTE, &align); - - nsICommandParams_Release(nsparam); - } - - return OLECMDF_SUPPORTED | OLECMDF_ENABLED | (align && !strcmp(align_str, align) ? OLECMDF_LATCHED : 0); -} - static HRESULT query_mshtml_copy(HTMLDocument *This, OLECMD *cmd) { FIXME("(%p)\n", This); @@ -861,18 +841,6 @@ static HRESULT WINAPI OleCommandTarget_QueryStatus(IOleCommandTarget *iface, con TRACE("CGID_MSHTML: IDM_ITALIC\n"); prgCmds[i].cmdf = query_edit_status(This, NSCMD_ITALIC); break; - case IDM_JUSTIFYCENTER: - TRACE("CGID_MSHTML: IDM_JUSTIFYCENTER\n"); - prgCmds[i].cmdf = query_align_status(This, NSALIGN_CENTER); - break; - case IDM_JUSTIFYLEFT: - TRACE("CGID_MSHTML: IDM_JUSTIFYLEFT\n"); - prgCmds[i].cmdf = query_align_status(This, NSALIGN_LEFT); - break; - case IDM_JUSTIFYRIGHT: - TRACE("CGID_MSHTML: IDM_JUSTIFYRIGHT\n"); - prgCmds[i].cmdf = query_align_status(This, NSALIGN_RIGHT); - break; case IDM_UNDERLINE: TRACE("CGID_MSHTML: IDM_UNDERLINE\n"); prgCmds[i].cmdf = query_edit_status(This, NSCMD_UNDERLINE);