diff --git a/dlls/mshtml/htmlwindow.c b/dlls/mshtml/htmlwindow.c
index 2aafaa3e4b4..5dbea55905c 100644
--- a/dlls/mshtml/htmlwindow.c
+++ b/dlls/mshtml/htmlwindow.c
@@ -57,6 +57,26 @@ static void window_set_docnode(HTMLWindow *window, HTMLDocumentNode *doc_node)
if(doc_node)
htmldoc_addref(&doc_node->basedoc);
}
+
+ if(doc_node && window->doc_obj->usermode == EDITMODE) {
+ nsIDOMNSHTMLDocument *nshtmldoc;
+ nsAString mode_str;
+ nsresult nsres;
+
+ static const PRUnichar onW[] = {'o','n',0};
+
+ nsres = nsIDOMHTMLDocument_QueryInterface(doc_node->nsdoc, &IID_nsIDOMNSHTMLDocument, (void**)&nshtmldoc);
+ if(NS_SUCCEEDED(nsres)) {
+ nsAString_Init(&mode_str, onW);
+ nsres = nsIDOMNSHTMLDocument_SetDesignMode(nshtmldoc, &mode_str);
+ nsAString_Finish(&mode_str);
+ nsIDOMNSHTMLDocument_Release(nshtmldoc);
+ if(NS_FAILED(nsres))
+ ERR("SetDesignMode failed: %08x\n", nsres);
+ }else {
+ ERR("Could not get nsIDOMNSHTMLDocument interface: %08x\n", nsres);
+ }
+ }
}
nsIDOMWindow *get_nsdoc_window(nsIDOMDocument *nsdoc)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 4431d9cd897..3db8d791e48 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -843,7 +843,6 @@ void update_title(HTMLDocumentObj*);
/* editor */
void init_editor(HTMLDocument*);
-void set_ns_editmode(NSContainer*);
void handle_edit_event(HTMLDocument*,nsIDOMEvent*);
HRESULT editor_exec_copy(HTMLDocument*,DWORD,VARIANT*,VARIANT*);
HRESULT editor_exec_cut(HTMLDocument*,DWORD,VARIANT*,VARIANT*);
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c
index f3e43c83136..8a590079278 100644
--- a/dlls/mshtml/nsembed.c
+++ b/dlls/mshtml/nsembed.c
@@ -767,46 +767,6 @@ void get_editor_controller(NSContainer *This)
}
}
-void set_ns_editmode(NSContainer *This)
-{
- nsIEditingSession *editing_session = NULL;
- nsIURIContentListener *listener = NULL;
- nsIDOMWindow *dom_window = NULL;
- nsresult nsres;
-
- nsres = get_nsinterface((nsISupports*)This->webbrowser, &IID_nsIEditingSession,
- (void**)&editing_session);
- if(NS_FAILED(nsres)) {
- ERR("Could not get nsIEditingSession: %08x\n", nsres);
- return;
- }
-
- nsres = nsIWebBrowser_GetContentDOMWindow(This->webbrowser, &dom_window);
- if(NS_FAILED(nsres)) {
- ERR("Could not get content DOM window: %08x\n", nsres);
- nsIEditingSession_Release(editing_session);
- return;
- }
-
- nsres = nsIEditingSession_MakeWindowEditable(editing_session, dom_window,
- NULL, FALSE, TRUE, TRUE);
- nsIEditingSession_Release(editing_session);
- nsIDOMWindow_Release(dom_window);
- if(NS_FAILED(nsres)) {
- ERR("MakeWindowEditable failed: %08x\n", nsres);
- return;
- }
-
- /* MakeWindowEditable changes WebBrowser's parent URI content listener.
- * It seams to be a bug in Gecko. To workaround it we set our content
- * listener again and Gecko's one as its parent.
- */
- nsIWebBrowser_GetParentURIContentListener(This->webbrowser, &listener);
- nsIURIContentListener_SetParentContentListener(NSURICL(This), listener);
- nsIURIContentListener_Release(listener);
- nsIWebBrowser_SetParentURIContentListener(This->webbrowser, NSURICL(This));
-}
-
void close_gecko(void)
{
TRACE("()\n");
diff --git a/dlls/mshtml/olecmd.c b/dlls/mshtml/olecmd.c
index b54f06420fb..4d5967a923f 100644
--- a/dlls/mshtml/olecmd.c
+++ b/dlls/mshtml/olecmd.c
@@ -616,9 +616,6 @@ static HRESULT exec_editmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in,
IDocHostUIHandler_HideUI(This->doc_obj->hostui);
}
- if(This->doc_obj->nscontainer)
- set_ns_editmode(This->doc_obj->nscontainer);
-
if(This->doc_obj->ui_active) {
RECT rcBorderWidths;