From f01105a7a1a61bef1f256be39d0df1895753a346 Mon Sep 17 00:00:00 2001 From: "rjesup%wgate.com" Date: Fri, 30 Aug 2002 15:44:48 +0000 Subject: [PATCH] Bug 126346: textzoom is not inherited by iframes. r=jag, sr=blizzard/dbaron git-svn-id: svn://10.0.0.236/trunk@128563 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/docshell/base/nsDocShell.cpp | 130 ++++++++++++--------------- 1 file changed, 57 insertions(+), 73 deletions(-) diff --git a/mozilla/docshell/base/nsDocShell.cpp b/mozilla/docshell/base/nsDocShell.cpp index 71266be61a4..6c4723017d9 100644 --- a/mozilla/docshell/base/nsDocShell.cpp +++ b/mozilla/docshell/base/nsDocShell.cpp @@ -207,6 +207,7 @@ nsDocShell::nsDocShell(): mAllowImages(PR_TRUE), mFocusDocFirst(PR_FALSE), mCreatingDocument(PR_FALSE), + mUseErrorPages(PR_FALSE), mAppType(nsIDocShell::APP_TYPE_UNKNOWN), mBusyFlags(BUSY_FLAGS_NONE), mFiredUnloadEvent(PR_FALSE), @@ -215,7 +216,6 @@ nsDocShell::nsDocShell(): mUseExternalProtocolHandler(PR_FALSE), mDisallowPopupWindows(PR_FALSE), mIsBeingDestroyed(PR_FALSE), - mUseErrorPages(PR_FALSE), mParent(nsnull), mTreeOwner(nsnull), mChromeEventHandler(nsnull) @@ -1967,41 +1967,7 @@ nsDocShell::AddChild(nsIDocShellTreeItem * aChild) if (!childAsDocShell) return NS_OK; - // Do some docShell Specific stuff. - nsXPIDLString defaultCharset; - nsXPIDLString forceCharset; - float textZoom = 1.0; - NS_ENSURE_TRUE(mContentViewer, NS_ERROR_FAILURE); - - nsCOMPtr muDV = - do_QueryInterface(mContentViewer); - if (muDV) { - NS_ENSURE_SUCCESS(muDV-> - GetDefaultCharacterSet(getter_Copies(defaultCharset)), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(muDV-> - GetForceCharacterSet(getter_Copies(forceCharset)), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(muDV-> - GetTextZoom(&textZoom), - NS_ERROR_FAILURE); - } - nsCOMPtr childCV; - NS_ENSURE_SUCCESS(childAsDocShell-> - GetContentViewer(getter_AddRefs(childCV)), - NS_ERROR_FAILURE); - if (childCV) { - nsCOMPtr childmuDV = - do_QueryInterface(childCV); - if (childmuDV) { - NS_ENSURE_SUCCESS(childmuDV->SetDefaultCharacterSet(defaultCharset), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(childmuDV->SetForceCharacterSet(forceCharset), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(childmuDV->SetTextZoom(textZoom), - NS_ERROR_FAILURE); - } - } + // charset and zoom will be inherited in SetupNewViewer() // Now take this document's charset and set the parentCharset field of the // child's DocumentCharsetInfo to it. We'll later use that field, in the @@ -4423,6 +4389,15 @@ nsDocShell::SetupNewViewer(nsIContentViewer * aNewViewer) NS_ERROR_FAILURE); nsCOMPtr parent(do_QueryInterface(parentAsItem)); + nsXPIDLString defaultCharset; + nsXPIDLString forceCharset; + nsXPIDLString hintCharset; + PRInt32 hintCharsetSource; + nsXPIDLString prevDocCharset; + float textZoom; + // |newMUDV| also serves as a flag to set the data from the above vars + nsCOMPtr newMUDV; + if (mContentViewer || parent) { nsCOMPtr oldMUDV; if (mContentViewer) { @@ -4438,44 +4413,32 @@ nsDocShell::SetupNewViewer(nsIContentViewer * aNewViewer) oldMUDV = do_QueryInterface(parentContentViewer); } - nsXPIDLString defaultCharset; - nsXPIDLString forceCharset; - nsXPIDLString hintCharset; - PRInt32 hintCharsetSource; - nsXPIDLString prevDocCharset; + if (oldMUDV) + { + nsresult rv; - nsCOMPtr - newMUDV(do_QueryInterface(aNewViewer)); - if (oldMUDV && newMUDV) { - NS_ENSURE_SUCCESS(oldMUDV-> - GetDefaultCharacterSet(getter_Copies - (defaultCharset)), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(oldMUDV-> - GetForceCharacterSet(getter_Copies(forceCharset)), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(oldMUDV-> - GetHintCharacterSet(getter_Copies(hintCharset)), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(oldMUDV-> - GetHintCharacterSetSource(&hintCharsetSource), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(oldMUDV-> - GetPrevDocCharacterSet(getter_Copies(prevDocCharset)), - NS_ERROR_FAILURE); - - // set the old state onto the new content viewer - NS_ENSURE_SUCCESS(newMUDV->SetDefaultCharacterSet(defaultCharset), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(newMUDV->SetForceCharacterSet(forceCharset), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(newMUDV->SetHintCharacterSet(hintCharset), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(newMUDV-> - SetHintCharacterSetSource(hintCharsetSource), - NS_ERROR_FAILURE); - NS_ENSURE_SUCCESS(newMUDV->SetPrevDocCharacterSet(prevDocCharset), - NS_ERROR_FAILURE); + newMUDV = do_QueryInterface(aNewViewer,&rv); + if (NS_SUCCEEDED(rv) && newMUDV) { + NS_ENSURE_SUCCESS(oldMUDV-> + GetDefaultCharacterSet(getter_Copies + (defaultCharset)), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(oldMUDV-> + GetForceCharacterSet(getter_Copies(forceCharset)), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(oldMUDV-> + GetHintCharacterSet(getter_Copies(hintCharset)), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(oldMUDV-> + GetHintCharacterSetSource(&hintCharsetSource), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(oldMUDV-> + GetTextZoom(&textZoom), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(oldMUDV-> + GetPrevDocCharacterSet(getter_Copies(prevDocCharset)), + NS_ERROR_FAILURE); + } } } @@ -4588,6 +4551,27 @@ nsDocShell::SetupNewViewer(nsIContentViewer * aNewViewer) return NS_ERROR_FAILURE; } + // If we have old state to copy, set the old state onto the new content + // viewer + if (newMUDV) + { + NS_ENSURE_SUCCESS(newMUDV->SetDefaultCharacterSet(defaultCharset), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(newMUDV->SetForceCharacterSet(forceCharset), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(newMUDV->SetHintCharacterSet(hintCharset), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(newMUDV-> + SetHintCharacterSetSource(hintCharsetSource), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(newMUDV->SetPrevDocCharacterSet(prevDocCharset), + NS_ERROR_FAILURE); + NS_ENSURE_SUCCESS(newMUDV->SetTextZoom(textZoom), + NS_ERROR_FAILURE); + // Drop the reference now just in case anyone cares (they may not). + newMUDV = nsnull; + } + // End copying block (Don't mess with the old content/document viewer // beyond here!!)