Jacek Caban : mshtml: Added IDM_SETDIRTY implementation.

Alexandre Julliard julliard at winehq.org
Fri Nov 9 07:44:22 CST 2007


Module: wine
Branch: master
Commit: a1e554739ee1a2e35bbb422d41c011bd551cbb2c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=a1e554739ee1a2e35bbb422d41c011bd551cbb2c

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Nov  9 02:23:08 2007 +0100

mshtml: Added IDM_SETDIRTY implementation.

---

 dlls/mshtml/editor.c |   36 ++++++++++++++++++++++++++++++++++++
 dlls/mshtml/olecmd.c |    7 -------
 2 files changed, 36 insertions(+), 7 deletions(-)

diff --git a/dlls/mshtml/editor.c b/dlls/mshtml/editor.c
index 20db6ee..51f5f26 100644
--- a/dlls/mshtml/editor.c
+++ b/dlls/mshtml/editor.c
@@ -99,6 +99,24 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
 static const WCHAR wszFont[] = {'f','o','n','t',0};
 static const WCHAR wszSize[] = {'s','i','z','e',0};
 
+static void set_dirty(HTMLDocument *This, VARIANT_BOOL dirty)
+{
+    nsresult nsres;
+
+    if(!This->nscontainer || !This->nscontainer->editor)
+        return;
+
+    if(dirty) {
+        nsres = nsIEditor_IncrementModificationCount(This->nscontainer->editor, 1);
+        if(NS_FAILED(nsres))
+            ERR("IncrementModificationCount failed: %08x\n", nsres);
+    }else {
+        nsres = nsIEditor_ResetModificationCount(This->nscontainer->editor);
+        if(NS_FAILED(nsres))
+            ERR("ResetModificationCount failed: %08x\n", nsres);
+    }
+}
+
 static void do_ns_editor_command(NSContainer *This, const char *cmd)
 {
     nsresult nsres;
@@ -383,6 +401,8 @@ static void set_font_size(HTMLDocument *This, LPCWSTR size)
 
     nsISelection_Release(nsselection);
     nsIDOMDocument_Release(nsdoc);
+
+    set_dirty(This, VARIANT_TRUE);
 }
 
 static void handle_arrow_key(HTMLDocument *This, nsIDOMKeyEvent *event, const char * const cmds[4])
@@ -949,6 +969,21 @@ HRESULT editor_exec_paste(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VAR
     return S_OK;
 }
 
+static HRESULT exec_setdirty(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
+{
+    TRACE("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out);
+
+    if(!in || This->usermode != EDITMODE)
+        return S_OK;
+
+    if(V_VT(in) == VT_BOOL)
+        set_dirty(This, V_BOOL(in));
+    else
+        FIXME("unsupported vt=%d\n", V_VT(in));
+
+    return S_OK;
+}
+
 static HRESULT query_edit_status(HTMLDocument *This, OLECMD *cmd)
 {
     switch(cmd->cmdID) {
@@ -1247,6 +1282,7 @@ const cmdtable_t editmode_cmds[] = {
     {IDM_OUTDENT,         query_edit_status,    exec_outdent},
     {IDM_COMPOSESETTINGS, NULL,                 exec_composesettings},
     {IDM_HYPERLINK,       query_edit_status,    exec_hyperlink},
+    {IDM_SETDIRTY,        NULL,                 exec_setdirty},
     {0,NULL,NULL}
 };
 
diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c
index 96cccae..b76ea31 100644
--- a/dlls/mshtml/olecmd.c
+++ b/dlls/mshtml/olecmd.c
@@ -626,12 +626,6 @@ static HRESULT exec_htmleditmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *
     return S_OK;
 }
 
-static HRESULT exec_setdirty(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
-{
-    FIXME("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out);
-    return E_NOTIMPL;
-}
-
 static HRESULT exec_baselinefont3(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
 {
     FIXME("(%p)->(%08x %p %p)\n", This, cmdexecopt, in, out);
@@ -718,7 +712,6 @@ static const cmdtable_t base_cmds[] = {
     {IDM_BROWSEMODE,       NULL,                  exec_browsemode},
     {IDM_EDITMODE,         NULL,                  exec_editmode},
     {IDM_PRINT,            query_enabled_stub,    exec_print},
-    {IDM_SETDIRTY,         NULL,                  exec_setdirty},
     {IDM_HTMLEDITMODE,     NULL,                  exec_htmleditmode},
     {IDM_BASELINEFONT3,    NULL,                  exec_baselinefont3},
     {IDM_BLOCKDIRLTR,      query_enabled_stub,    NULL},




More information about the wine-cvs mailing list