Module: wine Branch: master Commit: 19415addecb470f652ee441d477b74130c65ef59 URL: http://source.winehq.org/git/wine.git/?a=commit;h=19415addecb470f652ee441d47...
Author: Jacek Caban jacek@codeweavers.com Date: Mon Nov 23 19:28:17 2009 +0100
mshtml: Share connection points between HTMLDocumentObj and its main HTMLDocumentNode.
---
dlls/mshtml/conpoint.c | 3 +++ dlls/mshtml/htmldoc.c | 2 ++ dlls/mshtml/mshtml_private.h | 3 ++- 3 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/dlls/mshtml/conpoint.c b/dlls/mshtml/conpoint.c index 10d8e29..293e303 100644 --- a/dlls/mshtml/conpoint.c +++ b/dlls/mshtml/conpoint.c @@ -260,6 +260,9 @@ static HRESULT WINAPI ConnectionPointContainer_FindConnectionPoint(IConnectionPo
TRACE("(%p)->(%s %p)\n", This, debugstr_cp_guid(riid), ppCP);
+ if(This->forward_container) + return IConnectionPointContainer_FindConnectionPoint(CONPTCONT(This), riid, ppCP); + *ppCP = NULL;
for(iter = This->cp_list; iter; iter = iter->next) { diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c index 5dfc4db..0e76a9c 100644 --- a/dlls/mshtml/htmldoc.c +++ b/dlls/mshtml/htmldoc.c @@ -1825,6 +1825,8 @@ HRESULT create_doc_from_nsdoc(nsIDOMHTMLDocument *nsdoc, HTMLDocumentObj *doc_ob doc->ref = 1;
doc->basedoc.window = window; + if(window == doc_obj->basedoc.window) + doc->basedoc.cp_container.forward_container = &doc_obj->basedoc.cp_container;
nsIDOMHTMLDocument_AddRef(nsdoc); doc->nsdoc = nsdoc; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index ce13b48..17e01a2 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -261,11 +261,12 @@ typedef enum { EDITMODE } USERMODE;
-typedef struct { +typedef struct ConnectionPointContainer { const IConnectionPointContainerVtbl *lpConnectionPointContainerVtbl;
ConnectionPoint *cp_list; IUnknown *outer; + struct ConnectionPointContainer *forward_container; } ConnectionPointContainer;
struct ConnectionPoint {