Jacek Caban : mshtml: Added QueryStatus(IDM_JUSTIFY*) implementation.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Nov 9 13:57:54 CST 2006
Module: wine
Branch: master
Commit: 4769950d66ddf076ab423701749269195cec5403
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4769950d66ddf076ab423701749269195cec5403
Author: Jacek Caban <jacek at codeweavers.com>
Date: Thu Nov 9 10:50:51 2006 +0100
mshtml: Added QueryStatus(IDM_JUSTIFY*) implementation.
---
dlls/mshtml/olecmd.c | 44 ++++++++++++++++++++++++++++++++++--------
dlls/mshtml/tests/htmldoc.c | 3 ++
2 files changed, 38 insertions(+), 9 deletions(-)
diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c
index d663e48..1e8d048 100644
--- a/dlls/mshtml/olecmd.c
+++ b/dlls/mshtml/olecmd.c
@@ -49,6 +49,10 @@ #define NSCMD_FONTFACE "cmd_fontFace"
#define NSSTATE_ATTRIBUTE "state_attribute"
#define NSSTATE_ALL "state_all"
+#define NSALIGN_CENTER "center"
+#define NSALIGN_LEFT "left"
+#define NSALIGN_RIGHT "right"
+
/**********************************************************
* IOleCommandTarget implementation
*/
@@ -321,11 +325,33 @@ static DWORD query_edit_status(HTMLDocum
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 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 void set_ns_align(HTMLDocument *This, const char *align_str)
{
nsICommandParams *nsparam;
@@ -460,21 +486,21 @@ static HRESULT exec_italic(HTMLDocument
static HRESULT exec_justifycenter(HTMLDocument *This)
{
TRACE("(%p)\n", This);
- set_ns_align(This, "center");
+ set_ns_align(This, NSALIGN_CENTER);
return S_OK;
}
static HRESULT exec_justifyleft(HTMLDocument *This)
{
TRACE("(%p)\n", This);
- set_ns_align(This, "left");
+ set_ns_align(This, NSALIGN_LEFT);
return S_OK;
}
static HRESULT exec_justifyright(HTMLDocument *This)
{
TRACE("(%p)\n", This);
- set_ns_align(This, "right");
+ set_ns_align(This, NSALIGN_RIGHT);
return S_OK;
}
@@ -737,16 +763,16 @@ static HRESULT WINAPI OleCommandTarget_Q
prgCmds[i].cmdf = query_edit_status(This, NSCMD_ITALIC);
break;
case IDM_JUSTIFYCENTER:
- FIXME("CGID_MSHTML: IDM_JUSTIFYCENTER\n");
- prgCmds[i].cmdf = OLECMDF_SUPPORTED|OLECMDF_ENABLED;
+ TRACE("CGID_MSHTML: IDM_JUSTIFYCENTER\n");
+ prgCmds[i].cmdf = query_align_status(This, NSALIGN_CENTER);
break;
case IDM_JUSTIFYLEFT:
- FIXME("CGID_MSHTML: IDM_JUSTIFYLEFT\n");
- prgCmds[i].cmdf = OLECMDF_SUPPORTED|OLECMDF_ENABLED;
+ TRACE("CGID_MSHTML: IDM_JUSTIFYLEFT\n");
+ prgCmds[i].cmdf = query_align_status(This, NSALIGN_LEFT);
break;
case IDM_JUSTIFYRIGHT:
- FIXME("CGID_MSHTML: IDM_JUSTIFYRIGHT\n");
- prgCmds[i].cmdf = OLECMDF_SUPPORTED|OLECMDF_ENABLED;
+ 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");
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index 2ae2dbb..a42e296 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -2043,6 +2043,9 @@ static void test_MSHTML_QueryStatus(IUnk
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_JUSTIFYCENTER, cmdf);
+ test_QueryStatus(unk, &CGID_MSHTML, IDM_JUSTIFYLEFT, cmdf);
+ test_QueryStatus(unk, &CGID_MSHTML, IDM_JUSTIFYRIGHT, cmdf);
test_QueryStatus(unk, &CGID_MSHTML, IDM_ITALIC, cmdf);
test_QueryStatus(unk, &CGID_MSHTML, IDM_UNDERLINE, cmdf);
}
More information about the wine-cvs
mailing list