зеркало из https://github.com/mozilla/gecko-dev.git
Bug 65878: Make Image documents obey scrolling attribute on containing frames/iframes, remove unused variable, r=heikki@netscape.com, sr=jst@netscape.com
This commit is contained in:
Родитель
9d7ce42388
Коммит
ce606f1c58
|
@ -339,7 +339,6 @@ public:
|
|||
PRInt32 mNumOpenIFRAMES;
|
||||
|
||||
nsCString mRef;
|
||||
nsScrollPreference mOriginalScrollPreference;
|
||||
|
||||
nsString mBaseHREF;
|
||||
nsString mBaseTarget;
|
||||
|
@ -3516,15 +3515,13 @@ HTMLContentSink::StartLayout()
|
|||
// Else, reset scrolling to default settings for this shell.
|
||||
// This must happen before the initial reflow, when we create the root frame
|
||||
nsresult rv;
|
||||
if (mWebShell) {
|
||||
nsCOMPtr<nsIScrollable> scrollableContainer = do_QueryInterface(mWebShell, &rv);
|
||||
if (NS_SUCCEEDED(rv) && scrollableContainer) {
|
||||
if (mFrameset) {
|
||||
scrollableContainer->SetCurrentScrollbarPreferences(nsIScrollable::ScrollOrientation_Y, NS_STYLE_OVERFLOW_HIDDEN);
|
||||
scrollableContainer->SetCurrentScrollbarPreferences(nsIScrollable::ScrollOrientation_X, NS_STYLE_OVERFLOW_HIDDEN);
|
||||
} else {
|
||||
scrollableContainer->ResetScrollbarPreferences();
|
||||
}
|
||||
nsCOMPtr<nsIScrollable> scrollableContainer = do_QueryInterface(mWebShell, &rv);
|
||||
if (NS_SUCCEEDED(rv) && scrollableContainer) {
|
||||
if (mFrameset) {
|
||||
scrollableContainer->SetCurrentScrollbarPreferences(nsIScrollable::ScrollOrientation_Y, NS_STYLE_OVERFLOW_HIDDEN);
|
||||
scrollableContainer->SetCurrentScrollbarPreferences(nsIScrollable::ScrollOrientation_X, NS_STYLE_OVERFLOW_HIDDEN);
|
||||
} else {
|
||||
scrollableContainer->ResetScrollbarPreferences();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3568,7 +3565,7 @@ HTMLContentSink::StartLayout()
|
|||
}
|
||||
}
|
||||
|
||||
if ((nsnull != ref) || mFrameset) {
|
||||
if (ref || mFrameset) {
|
||||
// XXX support more than one presentation-shell here
|
||||
|
||||
// Get initial scroll preference and save it away; disable the
|
||||
|
@ -3586,10 +3583,6 @@ HTMLContentSink::StartLayout()
|
|||
nsIScrollableView* sview = nsnull;
|
||||
rootView->QueryInterface(NS_GET_IID(nsIScrollableView), (void**) &sview);
|
||||
if (nsnull != sview) {
|
||||
if (mFrameset)
|
||||
mOriginalScrollPreference = nsScrollPreference_kNeverScroll;
|
||||
else
|
||||
sview->GetScrollPreference(mOriginalScrollPreference);
|
||||
sview->SetScrollPreference(nsScrollPreference_kNeverScroll);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -40,6 +40,9 @@
|
|||
// Needed for Localization
|
||||
#include "nsXPIDLString.h"
|
||||
#include "nsIStringBundle.h"
|
||||
// Needed to fetch scrollbar prefs for image documents that are iframes/frameset frames
|
||||
#include "nsIScrollable.h"
|
||||
#include "nsWeakReference.h"
|
||||
|
||||
#define NSIMAGEDOCUMENT_PROPERTIES_URI "chrome://communicator/locale/layout/ImageDocument.properties"
|
||||
static NS_DEFINE_CID(kStringBundleServiceCID, NS_STRINGBUNDLESERVICE_CID);
|
||||
|
@ -85,6 +88,7 @@ public:
|
|||
|
||||
nsIImageRequest* mImageRequest;
|
||||
nscolor mBlack;
|
||||
nsWeakPtr mContainer;
|
||||
};
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
|
@ -195,6 +199,8 @@ nsImageDocument::StartDocumentLoad(const char* aCommand,
|
|||
PRBool aReset)
|
||||
{
|
||||
NS_ASSERTION(aDocListener, "null aDocListener");
|
||||
NS_ENSURE_ARG_POINTER(aContainer);
|
||||
mContainer = dont_AddRef(NS_GetWeakReference(aContainer));
|
||||
|
||||
nsresult rv = Init();
|
||||
|
||||
|
@ -345,6 +351,15 @@ nsImageDocument::CreateSyntheticDocument()
|
|||
void
|
||||
nsImageDocument::StartLayout()
|
||||
{
|
||||
|
||||
// Reset scrolling to default settings for this shell.
|
||||
// This must happen before the initial reflow, when we create the root frame
|
||||
nsCOMPtr<nsIScrollable> scrollableContainer(do_QueryReferent(mContainer));
|
||||
if (scrollableContainer) {
|
||||
scrollableContainer->ResetScrollbarPreferences();
|
||||
}
|
||||
|
||||
|
||||
PRInt32 i, ns = GetNumberOfShells();
|
||||
for (i = 0; i < ns; i++) {
|
||||
nsIPresShell* shell = GetShellAt(i);
|
||||
|
|
Загрузка…
Ссылка в новой задаче