Jacek Caban : mshtml: Move setup_ns_editing to nsembed.c.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Jun 11 08:46:35 CDT 2007
Module: wine
Branch: master
Commit: 791b868ce7883c254cee007cc759f45efd2ca9eb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=791b868ce7883c254cee007cc759f45efd2ca9eb
Author: Jacek Caban <jacek at codeweavers.com>
Date: Sun Jun 10 11:35:11 2007 +0200
mshtml: Move setup_ns_editing to nsembed.c.
---
dlls/mshtml/mshtml_private.h | 1 +
dlls/mshtml/nsembed.c | 48 ++++++++++++++++++++++++++++++++++++++++
dlls/mshtml/olecmd.c | 50 +-----------------------------------------
3 files changed, 50 insertions(+), 49 deletions(-)
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 5a0b17b..3f54104 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -383,6 +383,7 @@ typedef struct {
extern const cmdtable_t editmode_cmds[];
/* editor */
+void set_ns_editmode(NSContainer*);
void handle_edit_event(HTMLDocument*,nsIDOMEvent*);
extern DWORD mshtml_tls;
diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c
index 2040e03..c2c7318 100644
--- a/dlls/mshtml/nsembed.c
+++ b/dlls/mshtml/nsembed.c
@@ -580,6 +580,54 @@ void nsnode_to_nsstring(nsIDOMNode *nsdoc, nsAString *str)
nsIContentSerializer_Release(serializer);
}
+void set_ns_editmode(NSContainer *This)
+{
+ nsIInterfaceRequestor *iface_req;
+ nsIEditingSession *editing_session = NULL;
+ nsIURIContentListener *listener = NULL;
+ nsIDOMWindow *dom_window = NULL;
+ 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 = nsIInterfaceRequestor_GetInterface(iface_req, &IID_nsIEditingSession,
+ (void**)&editing_session);
+ nsIInterfaceRequestor_Release(iface_req);
+ 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);
+ 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 2c5a8ba..468c401 100644
--- a/dlls/mshtml/olecmd.c
+++ b/dlls/mshtml/olecmd.c
@@ -511,54 +511,6 @@ static HRESULT exec_browsemode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in
return S_OK;
}
-static void setup_ns_editing(NSContainer *This)
-{
- nsIInterfaceRequestor *iface_req;
- nsIEditingSession *editing_session = NULL;
- nsIURIContentListener *listener = NULL;
- nsIDOMWindow *dom_window = NULL;
- 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 = nsIInterfaceRequestor_GetInterface(iface_req, &IID_nsIEditingSession,
- (void**)&editing_session);
- nsIInterfaceRequestor_Release(iface_req);
- 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);
- 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));
-}
-
static HRESULT exec_editmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in, VARIANT *out)
{
IMoniker *mon;
@@ -590,7 +542,7 @@ static HRESULT exec_editmode(HTMLDocument *This, DWORD cmdexecopt, VARIANT *in,
}
if(This->nscontainer)
- setup_ns_editing(This->nscontainer);
+ set_ns_editmode(This->nscontainer);
hres = CreateURLMoniker(NULL, wszAboutBlank, &mon);
if(FAILED(hres)) {
More information about the wine-cvs
mailing list