diff --git a/mozilla/content/base/src/nsDocumentViewer.cpp b/mozilla/content/base/src/nsDocumentViewer.cpp index f62a1b668c3..09c7b8cf64c 100644 --- a/mozilla/content/base/src/nsDocumentViewer.cpp +++ b/mozilla/content/base/src/nsDocumentViewer.cpp @@ -165,6 +165,8 @@ NS_NewDocumentViewer(nsIDocumentViewer** aResult) DocumentViewerImpl::DocumentViewerImpl() { NS_INIT_REFCNT(); + mEnableRendering = PR_TRUE; + } DocumentViewerImpl::DocumentViewerImpl(nsIPresContext* aPresContext) @@ -590,6 +592,11 @@ DocumentViewerImpl::SetEnableRendering(PRBool aOn) if (mViewManager) { if (aOn) { mViewManager->EnableRefresh(); + nsIView* view; + mViewManager->GetRootView(view); // views are not refCounted + if (view) { + mViewManager->UpdateView(view,nsnull,NS_VMREFRESH_IMMEDIATE); + } } else { mViewManager->DisableRefresh(); diff --git a/mozilla/content/html/document/src/nsHTMLContentSink.cpp b/mozilla/content/html/document/src/nsHTMLContentSink.cpp index 87df549182e..d421b157d24 100644 --- a/mozilla/content/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/content/html/document/src/nsHTMLContentSink.cpp @@ -28,6 +28,7 @@ #include "nsIPresShell.h" #include "nsIPresContext.h" #include "nsIViewManager.h" +#include "nsIContentViewer.h" #include "nsHTMLTokens.h" #include "nsHTMLEntities.h" #include "nsCRT.h" @@ -244,6 +245,8 @@ public: void ProcessBaseHref(const nsString& aBaseHref); void ProcessBaseTarget(const nsString& aBaseTarget); + nsresult RefreshIfEnabled(nsIViewManager* vm); + // Routines for tags that require special handling nsresult ProcessATag(const nsIParserNode& aNode, nsIHTMLContent* aContent); nsresult ProcessAREATag(const nsIParserNode& aNode); @@ -2015,7 +2018,7 @@ HTMLContentSink::StartLayout() nsCOMPtr vm; shell->GetViewManager(getter_AddRefs(vm)); if (vm) { - vm->EnableRefresh(); + RefreshIfEnabled(vm); } } } @@ -2178,6 +2181,24 @@ HTMLContentSink::ProcessBaseHref(const nsString& aBaseHref) } } +nsresult +HTMLContentSink::RefreshIfEnabled(nsIViewManager* vm) +{ + if (vm) { + nsIContentViewer* contentViewer = nsnull; + nsresult rv = mWebShell->GetContentViewer(&contentViewer); + if (NS_SUCCEEDED(rv) && (contentViewer != nsnull)) { + PRBool enabled; + contentViewer->GetEnableRendering(&enabled); + if (enabled) { + vm->EnableRefresh(); + } + NS_RELEASE(contentViewer); + } + } + return NS_OK; +} + void HTMLContentSink::ProcessBaseTarget(const nsString& aBaseTarget) { diff --git a/mozilla/content/xml/document/src/nsXMLContentSink.cpp b/mozilla/content/xml/document/src/nsXMLContentSink.cpp index 9c52ebf65a2..4e5100c09bd 100644 --- a/mozilla/content/xml/document/src/nsXMLContentSink.cpp +++ b/mozilla/content/xml/document/src/nsXMLContentSink.cpp @@ -48,6 +48,7 @@ #include "nsIScriptContextOwner.h" #include "nsINameSpace.h" #include "nsINameSpaceManager.h" +#include "nsIContentViewer.h" #include "prtime.h" #include "prlog.h" #include "prmem.h" @@ -1528,7 +1529,7 @@ nsXMLContentSink::StartLayout() nsCOMPtr vm; shell->GetViewManager(getter_AddRefs(vm)); if (vm) { - vm->EnableRefresh(); + RefreshIfEnabled(vm); } NS_RELEASE(shell); @@ -1776,3 +1777,21 @@ nsXMLContentSink::ProcessStartSCRIPTTag(const nsIParserNode& aNode) return rv; } + +nsresult +nsXMLContentSink::RefreshIfEnabled(nsIViewManager* vm) +{ + if (vm) { + nsIContentViewer* contentViewer = nsnull; + nsresult rv = mWebShell->GetContentViewer(&contentViewer); + if (NS_SUCCEEDED(rv) && (contentViewer != nsnull)) { + PRBool enabled; + contentViewer->GetEnableRendering(&enabled); + if (enabled) { + vm->EnableRefresh(); + } + NS_RELEASE(contentViewer); + } + } + return NS_OK; +} diff --git a/mozilla/content/xml/document/src/nsXMLContentSink.h b/mozilla/content/xml/document/src/nsXMLContentSink.h index a67a14ea4a9..c4862ec08f5 100644 --- a/mozilla/content/xml/document/src/nsXMLContentSink.h +++ b/mozilla/content/xml/document/src/nsXMLContentSink.h @@ -116,6 +116,8 @@ protected: nsresult ProcessEndSCRIPTTag(const nsIParserNode& aNode); nsresult ProcessStartSCRIPTTag(const nsIParserNode& aNode); + nsresult RefreshIfEnabled(nsIViewManager* vm); + #ifdef XSL nsresult CreateStyleSheetURL(nsIURL** aUrl, const nsAutoString& aHref); nsresult LoadXSLStyleSheet(const nsIURL* aUrl); diff --git a/mozilla/layout/base/nsDocumentViewer.cpp b/mozilla/layout/base/nsDocumentViewer.cpp index f62a1b668c3..09c7b8cf64c 100644 --- a/mozilla/layout/base/nsDocumentViewer.cpp +++ b/mozilla/layout/base/nsDocumentViewer.cpp @@ -165,6 +165,8 @@ NS_NewDocumentViewer(nsIDocumentViewer** aResult) DocumentViewerImpl::DocumentViewerImpl() { NS_INIT_REFCNT(); + mEnableRendering = PR_TRUE; + } DocumentViewerImpl::DocumentViewerImpl(nsIPresContext* aPresContext) @@ -590,6 +592,11 @@ DocumentViewerImpl::SetEnableRendering(PRBool aOn) if (mViewManager) { if (aOn) { mViewManager->EnableRefresh(); + nsIView* view; + mViewManager->GetRootView(view); // views are not refCounted + if (view) { + mViewManager->UpdateView(view,nsnull,NS_VMREFRESH_IMMEDIATE); + } } else { mViewManager->DisableRefresh(); diff --git a/mozilla/layout/base/src/nsDocumentViewer.cpp b/mozilla/layout/base/src/nsDocumentViewer.cpp index f62a1b668c3..09c7b8cf64c 100644 --- a/mozilla/layout/base/src/nsDocumentViewer.cpp +++ b/mozilla/layout/base/src/nsDocumentViewer.cpp @@ -165,6 +165,8 @@ NS_NewDocumentViewer(nsIDocumentViewer** aResult) DocumentViewerImpl::DocumentViewerImpl() { NS_INIT_REFCNT(); + mEnableRendering = PR_TRUE; + } DocumentViewerImpl::DocumentViewerImpl(nsIPresContext* aPresContext) @@ -590,6 +592,11 @@ DocumentViewerImpl::SetEnableRendering(PRBool aOn) if (mViewManager) { if (aOn) { mViewManager->EnableRefresh(); + nsIView* view; + mViewManager->GetRootView(view); // views are not refCounted + if (view) { + mViewManager->UpdateView(view,nsnull,NS_VMREFRESH_IMMEDIATE); + } } else { mViewManager->DisableRefresh(); diff --git a/mozilla/layout/base/src/nsPluginViewer.cpp b/mozilla/layout/base/src/nsPluginViewer.cpp index 19bd4f64d55..2dea53bddac 100644 --- a/mozilla/layout/base/src/nsPluginViewer.cpp +++ b/mozilla/layout/base/src/nsPluginViewer.cpp @@ -186,6 +186,7 @@ PluginViewerImpl::PluginViewerImpl(const char* aCommand, NS_INIT_REFCNT(); nsIStreamListener* it = new PluginListener(this); *aDocListener = it; + mEnableRendering = PR_TRUE; } // ISupports implementation... diff --git a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp index 87df549182e..d421b157d24 100644 --- a/mozilla/layout/html/document/src/nsHTMLContentSink.cpp +++ b/mozilla/layout/html/document/src/nsHTMLContentSink.cpp @@ -28,6 +28,7 @@ #include "nsIPresShell.h" #include "nsIPresContext.h" #include "nsIViewManager.h" +#include "nsIContentViewer.h" #include "nsHTMLTokens.h" #include "nsHTMLEntities.h" #include "nsCRT.h" @@ -244,6 +245,8 @@ public: void ProcessBaseHref(const nsString& aBaseHref); void ProcessBaseTarget(const nsString& aBaseTarget); + nsresult RefreshIfEnabled(nsIViewManager* vm); + // Routines for tags that require special handling nsresult ProcessATag(const nsIParserNode& aNode, nsIHTMLContent* aContent); nsresult ProcessAREATag(const nsIParserNode& aNode); @@ -2015,7 +2018,7 @@ HTMLContentSink::StartLayout() nsCOMPtr vm; shell->GetViewManager(getter_AddRefs(vm)); if (vm) { - vm->EnableRefresh(); + RefreshIfEnabled(vm); } } } @@ -2178,6 +2181,24 @@ HTMLContentSink::ProcessBaseHref(const nsString& aBaseHref) } } +nsresult +HTMLContentSink::RefreshIfEnabled(nsIViewManager* vm) +{ + if (vm) { + nsIContentViewer* contentViewer = nsnull; + nsresult rv = mWebShell->GetContentViewer(&contentViewer); + if (NS_SUCCEEDED(rv) && (contentViewer != nsnull)) { + PRBool enabled; + contentViewer->GetEnableRendering(&enabled); + if (enabled) { + vm->EnableRefresh(); + } + NS_RELEASE(contentViewer); + } + } + return NS_OK; +} + void HTMLContentSink::ProcessBaseTarget(const nsString& aBaseTarget) { diff --git a/mozilla/layout/xml/document/src/nsXMLContentSink.cpp b/mozilla/layout/xml/document/src/nsXMLContentSink.cpp index 9c52ebf65a2..4e5100c09bd 100644 --- a/mozilla/layout/xml/document/src/nsXMLContentSink.cpp +++ b/mozilla/layout/xml/document/src/nsXMLContentSink.cpp @@ -48,6 +48,7 @@ #include "nsIScriptContextOwner.h" #include "nsINameSpace.h" #include "nsINameSpaceManager.h" +#include "nsIContentViewer.h" #include "prtime.h" #include "prlog.h" #include "prmem.h" @@ -1528,7 +1529,7 @@ nsXMLContentSink::StartLayout() nsCOMPtr vm; shell->GetViewManager(getter_AddRefs(vm)); if (vm) { - vm->EnableRefresh(); + RefreshIfEnabled(vm); } NS_RELEASE(shell); @@ -1776,3 +1777,21 @@ nsXMLContentSink::ProcessStartSCRIPTTag(const nsIParserNode& aNode) return rv; } + +nsresult +nsXMLContentSink::RefreshIfEnabled(nsIViewManager* vm) +{ + if (vm) { + nsIContentViewer* contentViewer = nsnull; + nsresult rv = mWebShell->GetContentViewer(&contentViewer); + if (NS_SUCCEEDED(rv) && (contentViewer != nsnull)) { + PRBool enabled; + contentViewer->GetEnableRendering(&enabled); + if (enabled) { + vm->EnableRefresh(); + } + NS_RELEASE(contentViewer); + } + } + return NS_OK; +} diff --git a/mozilla/layout/xml/document/src/nsXMLContentSink.h b/mozilla/layout/xml/document/src/nsXMLContentSink.h index a67a14ea4a9..c4862ec08f5 100644 --- a/mozilla/layout/xml/document/src/nsXMLContentSink.h +++ b/mozilla/layout/xml/document/src/nsXMLContentSink.h @@ -116,6 +116,8 @@ protected: nsresult ProcessEndSCRIPTTag(const nsIParserNode& aNode); nsresult ProcessStartSCRIPTTag(const nsIParserNode& aNode); + nsresult RefreshIfEnabled(nsIViewManager* vm); + #ifdef XSL nsresult CreateStyleSheetURL(nsIURL** aUrl, const nsAutoString& aHref); nsresult LoadXSLStyleSheet(const nsIURL* aUrl); diff --git a/mozilla/modules/plugin/base/src/nsPluginViewer.cpp b/mozilla/modules/plugin/base/src/nsPluginViewer.cpp index 19bd4f64d55..2dea53bddac 100644 --- a/mozilla/modules/plugin/base/src/nsPluginViewer.cpp +++ b/mozilla/modules/plugin/base/src/nsPluginViewer.cpp @@ -186,6 +186,7 @@ PluginViewerImpl::PluginViewerImpl(const char* aCommand, NS_INIT_REFCNT(); nsIStreamListener* it = new PluginListener(this); *aDocListener = it; + mEnableRendering = PR_TRUE; } // ISupports implementation... diff --git a/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp b/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp index 19bd4f64d55..2dea53bddac 100644 --- a/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp +++ b/mozilla/modules/plugin/nglsrc/nsPluginViewer.cpp @@ -186,6 +186,7 @@ PluginViewerImpl::PluginViewerImpl(const char* aCommand, NS_INIT_REFCNT(); nsIStreamListener* it = new PluginListener(this); *aDocListener = it; + mEnableRendering = PR_TRUE; } // ISupports implementation...