[PATCH] Implement HTMLDocument get/put designMode

Alistair Leslie-Hughes leslie_alistair at hotmail.com
Tue Oct 28 04:36:52 CDT 2008


---
 dlls/mshtml/htmldoc.c        |   31 +++++++++++++++++++++++++++----
 dlls/mshtml/mshtml_private.h |    8 ++++++++
 2 files changed, 35 insertions(+), 4 deletions(-)

diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 01d52a2..4fa0641 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -37,6 +37,10 @@ WINE_DEFAULT_DEBUG_CHANNEL(mshtml);
 
 #define HTMLDOC_THIS(iface) DEFINE_THIS(HTMLDocument, HTMLDocument2, iface)
 
+static WCHAR szOff[] = {'O','F','f',0};
+static WCHAR szOn[] = {'O','n',0};
+static WCHAR szInherit[] = {'I','n','h','e','r','i','t',0};
+
 static HRESULT WINAPI HTMLDocument_QueryInterface(IHTMLDocument2 *iface, REFIID riid, void **ppvObject)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
@@ -433,15 +437,34 @@ static HRESULT WINAPI HTMLDocument_get_scripts(IHTMLDocument2 *iface, IHTMLEleme
 static HRESULT WINAPI HTMLDocument_put_designMode(IHTMLDocument2 *iface, BSTR v)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)->(%s)\n", This, debugstr_w(v));
-    return E_NOTIMPL;
+    TRACE("(%p)->(%s)\n", This, debugstr_w(v));
+    
+    if(strcmpW(v, szOff) == 0)
+        This->designmode = DESIGNMODE_OFF;
+    else if(strcmpW(v, szOn) == 0)
+        This->designmode = DESIGNMODE_ON;
+    else if(strcmpW(v, szInherit) == 0)
+        This->designmode = DESIGNMODE_INHERIT;
+
+    return S_OK;
 }
 
 static HRESULT WINAPI HTMLDocument_get_designMode(IHTMLDocument2 *iface, BSTR *p)
 {
     HTMLDocument *This = HTMLDOC_THIS(iface);
-    FIXME("(%p)->(%p)\n", This, p);
-    return E_NOTIMPL;
+    TRACE("(%p)->(%p)\n", This, p);
+
+    if(!p)
+        return E_INVALIDARG;
+
+    if(This->designmode == DESIGNMODE_ON)
+        *p = SysAllocString(szOn);
+    else if(This->designmode == DESIGNMODE_INHERIT)
+        *p = SysAllocString(szInherit);
+    else
+        *p = SysAllocString(szOff);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI HTMLDocument_get_selection(IHTMLDocument2 *iface, IHTMLSelectionObject **p)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 888669f..bd468a5 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -170,6 +170,12 @@ typedef enum {
 } USERMODE;
 
 typedef enum {
+    DESIGNMODE_ON,
+    DESIGNMODE_OFF,
+    DESIGNMODE_INHERIT
+} DESIGNMODE;
+
+typedef enum {
     SCRIPTMODE_GECKO,
     SCRIPTMODE_ACTIVESCRIPT
 } SCRIPTMODE;
@@ -289,6 +295,8 @@ struct HTMLDocument {
     struct list range_list;
 
     HTMLDOMNode *nodes;
+
+    DESIGNMODE designmode;
 };
 
 typedef struct {
-- 
1.5.4.3


--------------010400090905030107060802--



More information about the wine-patches mailing list