From 51d7af11df930452fda2df09065cef366d26a8c4 Mon Sep 17 00:00:00 2001 From: "ccarlen%netscape.com" Date: Fri, 8 Mar 2002 23:58:50 +0000 Subject: [PATCH] Bug 129288 - Changing font size from XUL prefs dialog crashes PPEmbed. It's because the XUL pref window's docshell is typeContent, not typeChrome. r=adamlock/sr=alecf/a=asa git-svn-id: svn://10.0.0.236/trunk@116228 18797224-902f-48f8-a5cc-f745e15eee43 --- .../browser/powerplant/source/CWindowCreator.cpp | 12 +++++++++++- .../browser/webBrowser/nsIWebBrowserSetup.idl | 10 ++++++++++ .../embedding/browser/webBrowser/nsWebBrowser.cpp | 8 ++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/mozilla/embedding/browser/powerplant/source/CWindowCreator.cpp b/mozilla/embedding/browser/powerplant/source/CWindowCreator.cpp index 021509b848a..128b575c160 100644 --- a/mozilla/embedding/browser/powerplant/source/CWindowCreator.cpp +++ b/mozilla/embedding/browser/powerplant/source/CWindowCreator.cpp @@ -40,6 +40,7 @@ #include "nsIWindowWatcher.h" #include "nsIServiceManagerUtils.h" +#include "nsIWebBrowserSetup.h" #include "CBrowserShell.h" #include "CBrowserWindow.h" @@ -209,7 +210,16 @@ LWindow* CWindowCreator::CreateWindowInternal(PRUint32 inChromeFlags, ThrowIfNil_(aShell); aShell->AddAttachments(); aShell->PutInside(theWindow, false); - + + if (chromeFlags & nsIWebBrowserChrome::CHROME_OPENAS_CHROME) + { + nsCOMPtr browser; + aShell->GetWebBrowser(getter_AddRefs(browser)); + nsCOMPtr setup(do_QueryInterface(browser)); + if (setup) + setup->SetProperty(nsIWebBrowserSetup::SETUP_IS_CHROME_WRAPPER, PR_TRUE); + } + if (chromeFlags & nsIWebBrowserChrome::CHROME_STATUSBAR) { LView::SetDefaultView(theWindow); diff --git a/mozilla/embedding/browser/webBrowser/nsIWebBrowserSetup.idl b/mozilla/embedding/browser/webBrowser/nsIWebBrowserSetup.idl index f1e5d233eb5..4118d183974 100644 --- a/mozilla/embedding/browser/webBrowser/nsIWebBrowserSetup.idl +++ b/mozilla/embedding/browser/webBrowser/nsIWebBrowserSetup.idl @@ -94,6 +94,16 @@ interface nsIWebBrowserSetup : nsISupports */ const unsigned long SETUP_USE_GLOBAL_HISTORY = 256; + /** + * A value of PR_TRUE makes the browser a chrome wrapper. + * Default is PR_FALSE. + * + * @since mozilla1.0 + * + * @see setProperty + */ + const unsigned long SETUP_IS_CHROME_WRAPPER = 7; + /** * Sets a property on the new web browser object. * diff --git a/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp b/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp index f48274fd1a6..d4a103eba8e 100644 --- a/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp +++ b/mozilla/embedding/browser/webBrowser/nsWebBrowser.cpp @@ -443,6 +443,8 @@ NS_IMETHODIMP nsWebBrowser::SetItemType(PRInt32 aItemType) { NS_ENSURE_TRUE((aItemType == typeContentWrapper || aItemType == typeChromeWrapper), NS_ERROR_FAILURE); mContentType = aItemType; + if (mDocShellAsItem) + mDocShellAsItem->SetItemType(mContentType == typeChromeWrapper ? typeChrome : typeContent); return NS_OK; } @@ -738,6 +740,12 @@ NS_IMETHODIMP nsWebBrowser::SetProperty(PRUint32 aId, PRUint32 aValue) // obsolete } break; + case nsIWebBrowserSetup::SETUP_IS_CHROME_WRAPPER: + { + NS_ENSURE_TRUE((aValue == PR_TRUE || aValue == PR_FALSE), NS_ERROR_INVALID_ARG); + SetItemType(aValue ? typeChromeWrapper : typeContentWrapper); + } + break; default: rv = NS_ERROR_INVALID_ARG;