diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index bff3d14ed65..15c5abfd480 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -705,6 +705,7 @@ void ConnectionPointContainer_Destroy(ConnectionPointContainer*); NSContainer *NSContainer_Create(HTMLDocumentObj*,NSContainer*); void NSContainer_Release(NSContainer*); +nsresult create_chrome_window(nsIWebBrowserChrome*,nsIWebBrowserChrome**); void init_mutation(HTMLDocumentNode*); void release_mutation(HTMLDocumentNode*); diff --git a/dlls/mshtml/nsembed.c b/dlls/mshtml/nsembed.c index d766af87ebb..e9a176d26d1 100644 --- a/dlls/mshtml/nsembed.c +++ b/dlls/mshtml/nsembed.c @@ -1150,8 +1150,6 @@ static nsresult NSAPI nsWebBrowserChrome_ExitModalEventLoop(nsIWebBrowserChrome return NS_ERROR_NOT_IMPLEMENTED; } -#undef NSWBCHROME_THIS - static const nsIWebBrowserChromeVtbl nsWebBrowserChromeVtbl = { nsWebBrowserChrome_QueryInterface, nsWebBrowserChrome_AddRef, @@ -1711,6 +1709,17 @@ static const nsISupportsWeakReferenceVtbl nsSupportsWeakReferenceVtbl = { nsSupportsWeakReference_GetWeakReference }; +nsresult create_chrome_window(nsIWebBrowserChrome *parent, nsIWebBrowserChrome **ret) +{ + NSContainer *new_container; + + if(parent->lpVtbl != &nsWebBrowserChromeVtbl) + return NS_ERROR_UNEXPECTED; + + new_container = NSContainer_Create(NULL, NSWBCHROME_THIS(parent)); + *ret = NSWBCHROME(new_container); + return NS_OK; +} NSContainer *NSContainer_Create(HTMLDocumentObj *doc, NSContainer *parent) { diff --git a/dlls/mshtml/nsservice.c b/dlls/mshtml/nsservice.c index 792feb5d57e..b280020959e 100644 --- a/dlls/mshtml/nsservice.c +++ b/dlls/mshtml/nsservice.c @@ -99,8 +99,7 @@ static nsresult NSAPI nsWindowCreator_CreateChromeWindow2(nsIWindowCreator2 *ifa if(cancel) *cancel = FALSE; - *_retval = NSWBCHROME(NSContainer_Create(NULL, (NSContainer*)parent)); - return NS_OK; + return create_chrome_window(parent, _retval); } static const nsIWindowCreator2Vtbl nsWindowCreatorVtbl = {