Jacek Caban : mshtml: Move edit command queries to the command table.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 11 08:46:34 CDT 2007
Module: wine
Branch: master
Commit: 2e12e7e4de95b2b992bd52ac2eb3bb39128c2a56
URL: http://source.winehq.org/git/wine.git/?a=commit;h=2e12e7e4de95b2b992bd52ac2eb3bb39128c2a56
Author: Jacek Caban <jacek at codeweavers.com>
Date: Sun Jun 10 11:33:09 2007 +0200
mshtml: Move edit command queries to the command table.
---
dlls/mshtml/editor.c | 103 ++++++++++++++++++++++++++++++++++++++++++-------
dlls/mshtml/olecmd.c | 94 ---------------------------------------------
2 files changed, 88 insertions(+), 109 deletions(-)
diff --git a/dlls/mshtml/editor.c b/dlls/mshtml/editor.c
index 6bdc0a0..b3ef0cb 100644
--- a/dlls/mshtml/editor.c
+++ b/dlls/mshtml/editor.c
@@ -50,6 +50,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define NSCMD_UNDERLINE "cmd_underline"
#define NSSTATE_ATTRIBUTE "state_attribute"
+#define NSSTATE_ALL "state_all"
#define NSALIGN_CENTER "center"
#define NSALIGN_LEFT "left"
@@ -122,6 +123,26 @@ static nsresult get_ns_command_state(NSContainer *This, const char *cmd, nsIComm
return nsres;
}
+static DWORD query_ns_edit_status(HTMLDocument *This, const char *nscmd)
+{
+ nsICommandParams *nsparam;
+ PRBool b = FALSE;
+
+ if(This->usermode != EDITMODE || This->readystate < READYSTATE_INTERACTIVE)
+ return OLECMDF_SUPPORTED;
+
+ if(This->nscontainer && nscmd) {
+ nsparam = create_nscommand_params();
+ get_ns_command_state(This->nscontainer, nscmd, nsparam);
+
+ nsICommandParams_GetBooleanValue(nsparam, NSSTATE_ALL, &b);
+
+ nsICommandParams_Release(nsparam);
+ }
+
+ return OLECMDF_SUPPORTED | OLECMDF_ENABLED | (b ? OLECMDF_LATCHED : 0);
+}
+
static void set_ns_align(HTMLDocument *This, const char *align_str)
{
nsICommandParams *nsparam;
@@ -847,21 +868,73 @@ static HRESULT exec_composesettings(HTMLDocument *This, DWORD cmdexecopt, VARIAN
return S_OK;
}
+static HRESULT query_edit_status(HTMLDocument *This, OLECMD *cmd)
+{
+ switch(cmd->cmdID) {
+ case IDM_FONTNAME:
+ TRACE("CGID_MSHTML: IDM_FONTNAME\n");
+ cmd->cmdf = query_ns_edit_status(This, NULL);
+ break;
+ case IDM_FONTSIZE:
+ TRACE("CGID_MSHTML: IDM_FONTSIZE\n");
+ cmd->cmdf = query_ns_edit_status(This, NULL);
+ break;
+ case IDM_BOLD:
+ TRACE("CGID_MSHTML: IDM_BOLD\n");
+ cmd->cmdf = query_ns_edit_status(This, NSCMD_BOLD);
+ break;
+ case IDM_FORECOLOR:
+ TRACE("CGID_MSHTML: IDM_FORECOLOR\n");
+ cmd->cmdf = query_ns_edit_status(This, NULL);
+ break;
+ case IDM_ITALIC:
+ TRACE("CGID_MSHTML: IDM_ITALIC\n");
+ cmd->cmdf = query_ns_edit_status(This, NSCMD_ITALIC);
+ break;
+ case IDM_UNDERLINE:
+ TRACE("CGID_MSHTML: IDM_UNDERLINE\n");
+ cmd->cmdf = query_ns_edit_status(This, NSCMD_UNDERLINE);
+ break;
+ case IDM_HORIZONTALLINE:
+ TRACE("CGID_MSHTML: IDM_HORIZONTALLINE\n");
+ cmd->cmdf = query_ns_edit_status(This, NULL);
+ break;
+ case IDM_ORDERLIST:
+ TRACE("CGID_MSHTML: IDM_ORDERLIST\n");
+ cmd->cmdf = query_ns_edit_status(This, NSCMD_OL);
+ break;
+ case IDM_UNORDERLIST:
+ TRACE("CGID_MSHTML: IDM_HORIZONTALLINE\n");
+ cmd->cmdf = query_ns_edit_status(This, NSCMD_UL);
+ break;
+ case IDM_INDENT:
+ TRACE("CGID_MSHTML: IDM_INDENT\n");
+ cmd->cmdf = query_ns_edit_status(This, NULL);
+ break;
+ case IDM_OUTDENT:
+ TRACE("CGID_MSHTML: IDM_OUTDENT\n");
+ cmd->cmdf = query_ns_edit_status(This, NULL);
+ break;
+ }
+
+ 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, 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},
- {IDM_UNORDERLIST, NULL, exec_unorderlist},
- {IDM_INDENT, NULL, exec_indent},
- {IDM_OUTDENT, NULL, exec_outdent},
- {IDM_COMPOSESETTINGS, NULL, exec_composesettings},
+ {IDM_FONTNAME, query_edit_status, exec_fontname},
+ {IDM_FONTSIZE, query_edit_status, exec_fontsize},
+ {IDM_FORECOLOR, query_edit_status, exec_forecolor},
+ {IDM_BOLD, query_edit_status, exec_bold},
+ {IDM_ITALIC, query_edit_status, exec_italic},
+ {IDM_JUSTIFYCENTER, query_justify, exec_justifycenter},
+ {IDM_JUSTIFYRIGHT, query_justify, exec_justifyright},
+ {IDM_JUSTIFYLEFT, query_justify, exec_justifyleft},
+ {IDM_UNDERLINE, query_edit_status, exec_underline},
+ {IDM_HORIZONTALLINE, query_edit_status, exec_horizontalline},
+ {IDM_ORDERLIST, query_edit_status, exec_orderlist},
+ {IDM_UNORDERLIST, query_edit_status, exec_unorderlist},
+ {IDM_INDENT, query_edit_status, exec_indent},
+ {IDM_OUTDENT, query_edit_status, exec_outdent},
+ {IDM_COMPOSESETTINGS, NULL, exec_composesettings},
{0,NULL,NULL}
};
diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c
index df346eb..b846588 100644
--- a/dlls/mshtml/olecmd.c
+++ b/dlls/mshtml/olecmd.c
@@ -52,7 +52,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
#define NSCMD_OL "cmd_ol"
#define NSSTATE_ATTRIBUTE "state_attribute"
-#define NSSTATE_ALL "state_all"
#define NSALIGN_CENTER "center"
#define NSALIGN_LEFT "left"
@@ -461,55 +460,6 @@ static HRESULT exec_get_print_template(HTMLDocument *This, DWORD nCmdexecopt, VA
return E_NOTIMPL;
}
-static nsresult get_ns_command_state(NSContainer *This, const char *cmd, nsICommandParams *nsparam)
-{
- nsICommandManager *cmdmgr;
- nsIInterfaceRequestor *iface_req;
- nsresult nsres;
-
- nsres = nsIWebBrowser_QueryInterface(This->webbrowser,
- &IID_nsIInterfaceRequestor, (void**)&iface_req);
- if(NS_FAILED(nsres)) {
- ERR("Could not get nsIInterfaceRequestor: %08x\n", nsres);
- return nsres;
- }
-
- nsres = nsIInterfaceRequestor_GetInterface(iface_req, &IID_nsICommandManager,
- (void**)&cmdmgr);
- nsIInterfaceRequestor_Release(iface_req);
- if(NS_FAILED(nsres)) {
- ERR("Could not get nsICommandManager: %08x\n", nsres);
- return nsres;
- }
-
- nsres = nsICommandManager_GetCommandState(cmdmgr, cmd, NULL, nsparam);
- if(NS_FAILED(nsres))
- ERR("GetCommandState(%s) failed: %08x\n", debugstr_a(cmd), nsres);
-
- nsICommandManager_Release(cmdmgr);
- return nsres;
-}
-
-static DWORD query_edit_status(HTMLDocument *This, const char *nscmd)
-{
- nsICommandParams *nsparam;
- PRBool b = FALSE;
-
- if(This->usermode != EDITMODE || This->readystate < READYSTATE_INTERACTIVE)
- return OLECMDF_SUPPORTED;
-
- if(This->nscontainer && nscmd) {
- nsparam = create_nscommand_params();
- get_ns_command_state(This->nscontainer, nscmd, nsparam);
-
- nsICommandParams_GetBooleanValue(nsparam, NSSTATE_ALL, &b);
-
- nsICommandParams_Release(nsparam);
- }
-
- return OLECMDF_SUPPORTED | OLECMDF_ENABLED | (b ? OLECMDF_LATCHED : 0);
-}
-
static HRESULT query_mshtml_copy(HTMLDocument *This, OLECMD *cmd)
{
FIXME("(%p)\n", This);
@@ -817,54 +767,10 @@ static HRESULT WINAPI OleCommandTarget_QueryStatus(IOleCommandTarget *iface, con
continue;
switch(prgCmds[i].cmdID) {
- case IDM_FONTNAME:
- TRACE("CGID_MSHTML: IDM_FONTNAME\n");
- prgCmds[i].cmdf = query_edit_status(This, NULL);
- break;
- case IDM_FONTSIZE:
- TRACE("CGID_MSHTML: IDM_FONTSIZE\n");
- prgCmds[i].cmdf = query_edit_status(This, NULL);
- break;
case IDM_PRINT:
FIXME("CGID_MSHTML: IDM_PRINT\n");
prgCmds[i].cmdf = OLECMDF_SUPPORTED|OLECMDF_ENABLED;
break;
- case IDM_BOLD:
- TRACE("CGID_MSHTML: IDM_BOLD\n");
- prgCmds[i].cmdf = query_edit_status(This, NSCMD_BOLD);
- break;
- case IDM_FORECOLOR:
- TRACE("CGID_MSHTML: IDM_FORECOLOR\n");
- prgCmds[i].cmdf = query_edit_status(This, NULL);
- break;
- case IDM_ITALIC:
- TRACE("CGID_MSHTML: IDM_ITALIC\n");
- prgCmds[i].cmdf = query_edit_status(This, NSCMD_ITALIC);
- break;
- case IDM_UNDERLINE:
- TRACE("CGID_MSHTML: IDM_UNDERLINE\n");
- prgCmds[i].cmdf = query_edit_status(This, NSCMD_UNDERLINE);
- break;
- case IDM_HORIZONTALLINE:
- TRACE("CGID_MSHTML: IDM_HORIZONTALLINE\n");
- prgCmds[i].cmdf = query_edit_status(This, NULL);
- break;
- case IDM_ORDERLIST:
- TRACE("CGID_MSHTML: IDM_ORDERLIST\n");
- prgCmds[i].cmdf = query_edit_status(This, NSCMD_OL);
- break;
- case IDM_UNORDERLIST:
- TRACE("CGID_MSHTML: IDM_HORIZONTALLINE\n");
- prgCmds[i].cmdf = query_edit_status(This, NSCMD_UL);
- break;
- case IDM_INDENT:
- TRACE("CGID_MSHTML: IDM_INDENT\n");
- prgCmds[i].cmdf = query_edit_status(This, NULL);
- break;
- case IDM_OUTDENT:
- TRACE("CGID_MSHTML: IDM_OUTDENT\n");
- prgCmds[i].cmdf = query_edit_status(This, NULL);
- break;
case IDM_BLOCKDIRLTR:
FIXME("CGID_MSHTML: IDM_BLOCKDIRLTR\n");
prgCmds[i].cmdf = OLECMDF_SUPPORTED|OLECMDF_ENABLED;
More information about the wine-cvs
mailing list